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 属性就能跳过测试