Maven知识点
(1)maven 打包构建相关命令
1、命令
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个阶段。
2、区别
package 命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库。
install 命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库。
deploy 命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库。
3、补充说明
(1)–help,可以看到:
usage: mvn [options] [<goal(s)>] [<phase(s)>]
Options:
-am,--also-make If project list is specified, also
build projects required by the
list
-amd,--also-make-dependents If project list is specified, also
build projects that depend on
projects on the list
...
-pl,--projects <arg> Build specified reactor projects
instead of all projects
...
-am 如果 pl 参数存在,就同时构建 pl 参数所列模块依赖的其它模块。
-amd 如果 pl 参数存在,就同时构建依赖于 pl 参数所列模块的其它模块。
-pl,–projects : 构建指定模块,多个模块用逗号(,)分隔。
(2)排除test模块构建
-Dmaven.test.skip
或者
-Dmaven.test.skip = true。
(3)-P test
-P maven 会激活项目下的pom.xml配置的profiles的profile标签下的id为test的相关配置文件和其它文件。
比如:
<profiles>
<profile>
<id>test</id>
<dependencies>
<dependency>
<groupId>com.itwuyi.platform</groupId>
<artifactId>send</artifactId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.itwuyi.platform</groupId>
<artifactId>receive</artifactId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.itwuyi.platform</groupId>
<artifactId>sync</artifactId>
<version>1.1.0-SNAPSHOT</version>
</dependency>
</dependencies>
</profile>
</profiles>
(4)-P参数需要配置的东西
使用占位符配置定义的${env}进行资源过滤。
<build>
<!--指定资源目录 配置是否启用资源过滤(就是是否启用占位符替换)-->
<filters>
<filter>src/main/resources/${env}/config.properties</filter>
<filter>src/main/resources/${env}/common.properties</filter>
</filters>
<resources>
<resource>
<directory>src/main/java/</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources/</directory>
<includes>
<include>**</include>
</includes>
<excludes>
<exclude>profile/test/**</exclude>
<exclude>profile/dev/**</exclude>
<exclude>profile/prod/**</exclude>
</excludes>
</resource>
</resources>
</build>
总结:
1. -P 参数配合资源过滤Filter,最终使用了 src/main/resources/test/config.properties和 src/main/resources/test/common.properties文件。
2. 这个地方的配置就是让我们可以使用pom.xml文件里profile标签里面id标识对应的值。
4、执行命令
mvn clean install -pl myproject -am -Dmaven.test.skip=true -P test
或者
mvn clean install -pl myproject -am -Dmaven.test.skip -P test
解析:
清class文件,打包构建myproject项目,包括该项目依赖的其它模块,跳过测试,以项目下的pom.xml配置的标签下id为test的相关配置文件启动。