Maven dependencyManagementinstall/package/deploy

Posted Landfill

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven dependencyManagementinstall/package/deploy相关的知识,希望对你有一定的参考价值。

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>

以上是关于Maven dependencyManagementinstall/package/deploy的主要内容,如果未能解决你的问题,请参考以下文章

Maven

Maven学习笔记

maven install与maven build的区别

maven系列之二maven项目的创建和maven项目的结构

Maven项目的创建及相关配置

Maven学习-----Maven中央存储库