zoukankan      html  css  js  c++  java
  • Maven

    Maven

    Maven打包

    maven package

    maven shade

    maven assembly

    依赖冲突解决原则

    最短路径 => 都在第1级,后面的会覆盖前面的 => 在2,3...N级,谁先声明使用谁(父依赖的声明顺序)

    dependencyManagement。以此明确的版本为准

    Maven仓库

    Maven Scope

    Maven命令

    mvn help:effective-pom

    命令行参数

    常用命令

    Java命令行参数

    https://juejin.im/post/6844904049871962126#heading-0

    dependencyManagement

    在Maven多模块的时候,管理依赖关系是非常重要的,各种依赖包冲突,查询问题起来非常复杂,于是就用到了

    示例说明,

    在父模块中:

    <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.44</version>
                </dependency>
               
            </dependencies>
    </dependencyManagement>
    

    那么在子模块中只需要即可,如:

     <dependencies>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
     </dependencies>
    

    使用dependencyManagement可以统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,不用每个模块项目都弄一个版本号,不利于管理,当需要变更版本号的时候只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个特殊的版本号时,只需要在自己的模块dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。

    与dependencies区别:

    1)Dependencies相对于dependencyManagement,所有生命在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。
    2)dependencyManagement里只是声明依赖,并不自动实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

    install/package/deploy

    mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
    mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
    mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。
    由上面的分析可知主要区别如下,

    package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
    install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
    deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库

    打包时Skip Tests

    在Maven Projects界面中可以看到如下几个按钮。其中红框中的按钮叫Toggle ‘Skip Tests’ Mode。就是跳过测试Skip Tests的按钮。图中的状态是选中状态,该状态下已经能够跳过测试了。再点击一下就能恢复到未选中的状态即不跳过测试。
    1

    打包顺序

    依赖关系对安装顺序的要求
    A 依赖 B:Maven 要求先安装 B,再安装 A
    继承关系对安装顺序的要求
    A(子工程)继承 B(父工程):Maven 要求先安装 B,再安装 A
    如果配置聚合,那么对聚合工程执行 install 命令,Maven 就会自动按照正确的顺序安装各个模块工程。

    maven打包字符集

    解决maven打包编译出现File encoding has not been set问题

    maven打包编译时后台一直输出警告信息

    [WARNING] File encoding has not been set, using platform encoding GBK, i.e. build is platform dependent!
    在pom.xml文件中增加一个配置项即可

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
    
  • 相关阅读:
    学习类的网站链接
    聊聊Web App、Hybrid App与Native App的设计差异
    Telnet是什么意思又是什么协议 Telnet有什么作用及功能
    telnet命令的使用方法
    HTTP协议详解(真的很经典)(转载)
    数据导入报错:Got a packet bigger than‘max_allowed_packet’bytes的问题
    Mysql mysql lost connection to server during query 问题解决方法
    MySQL 分组之后如何统计记录条数 gourp by 之后的 count()
    学习生活必须知道的网站或者App
    shell脚本使用## or %%
  • 原文地址:https://www.cnblogs.com/land-fill/p/14940313.html
Copyright © 2011-2022 走看看