maven命令package、install、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私服仓库  

compile和package的区别
mvn compile 
在命令行切入maven项目的目录,输入mvn compile后,maven会自动下载依赖jar,为代码生成字节码文件等,即编译。
成功之后,即可在<根目录>/target找到编译出来的class文件。 
mvn package 
打包命令。pom.xml中默认将项目打包成jar文件。执行完成之后,即可在target文件夹内找到jar文件。


Maven命令行参数

查看mvn命令的帮助信息

mvn -h

设置系统属性 mvn -D,最常用的就是跳过test,该处定义的属性在Maven POM or Maven Plugin中同样生效

mvn install -Dmaven.test.skip=true

启用profiles,mvn -Pxxx 激活 id 为 xxx的profile (如有多个,用逗号隔开)

mvn package assembly:single -P profileid

针对failure的选项

-fea 编译结束后显示错误
-ff 错误后马上停止,默认应该是这个选项
-fn 无视结果

verbosity控制

-e 会把maven执行时候的错误堆栈打出来,对于maven插件的开发者很有用
-X debug
-q quiet 只打印错误

Dependencies策略

-U 只是保证SNAPSHOT版本的依赖会更新到最新
-C 对下载的依赖进行checksum

不对子工程递归执行,有时候只想install最外层的父pom至本地仓库,可使用-N参数

mvn -N install

mvn -Dxxx=yyy 指定java全局属性

创建Maven的普通java项目: 

mvn archetype:create -DgroupId=packageName -DartifactId=projectName

创建Maven的Web项目:   

mvn archetype:create -DgroupId=packageName -DartifactId=webappName -DarchetypeArtifactId=maven-archetype-webapp

编译源代码: mvn compile 

编译测试代码:mvn test-compile    

运行测试:mvn test 

只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile

mvn jetty:run  调用 Jetty 插件的 Run 目标在 Jetty Servlet 容器中启动 web 应用

mvn install -Dmaven.test.skip=true 给任何目标添加maven.test.skip 属性就能跳过测试