一. 打包命令执行及其区别
- package
mvn clean package
依次执行clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。 - install
mvn clean install
依次执行clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。 - deploy
mvn clean deploy
依次执行clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。 - package、install、deploy异同
4.1 共同点: 都完成了项目编译、单元测试、打包功能
4.2 区别
package
:没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
install
:把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
deploy
:把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
二. Maven中-DskipTests和-Dmaven.test.skip=true的跳过测试的区别
在使用第1条中的maven命令进行编译打包的时候,maven会执行项目中的Junit测试用例。
在项目发布的时候,我们不希望再执行测试用例,可以用-DskipTests
或者-Dmaven.test.skip=true
这两个参数跳过。
区别:
-
-DskipTests
:跳过单元测试,但是会继续编译测试用例类的,并生成相应的class文件到target/test-classes下。 -
-Dmaven.test.skip=true
:不但跳过单元测试,也跳过测试用例类的编译。
个人建议:用mvn clean install -Dmaven.test.skip=true
来得更直接点,可以避免因单元测试类的编译错误而导致的打包失败。