build 生命周期定义了building,testing,distributing等,是maven project的核心
有3个内置的lifecycle : default,clean,site
包含20 个build phases,
validate : 检查所有的project information是可用的并且是正确的
initialize 初始化状态,如设置properties或者创建目录
generate-sources
process-sources
generate-resources
process-resources
compile :编译
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources
test-compile
process-test-classes
test : 运行unit tests
prepare-package
package : 以distribution format打包编译好的代码
pre-integration-test
Integration-test : 集成测试
post-integration-test
verify : 检查集成测试的结果
install : 把package 安装到local repository
deploy : 把package 安装到remote repository
当你执行一个build phase,所有以前的phases都会顺序执行
mvn install
mvn clean deploy
负责项目清理
pre-clean 执行clean前要求的processes
clean 删除以前builds 产生的所有文件
post-clean 执行完成clean后要求的processes
负责产生和部署project 的site documentation
pre-site: site动作前需要执行的processes
site: 产生项目的site documentation
Post-site : site后要执行的processes并准备布署
Site-deploy : 布署文档到指定的web server
每个build phase 可以通过绑定不同的plugin goals 来完成不同的行为
一个plugin goal代表一个特定的task,它的范围比build phase要小; 一个plugin goal可以梆定到0个或者多个build phases. 没有绑定到任何build phase的goal可以通过直接调用在build lifecycle外执行;执行的顺序依赖于goals和build phases 调用的顺序。
mvn clean dependency:copy-dependencies package
如果一个goal 绑定到一个或多个build phases,在所有的这些phases执行时,这个goal都会被调用
一个build phase可以绑定0个或多个goals
在maven 2.0.5及以后, 绑定到一个phase中的多个goals按照它们在pom中声明的顺序执行,但是
同一个plugin的multiple instances 是不支持的,从maven 2.0.11及以后同一个plugin的multiple
instances 成为一组并按顺序一起执行
通常并不从命令行调用某些phases,因为它们之前或之后可能绑定了一些goal,如pre-*,post-*或者process-*
Packaging
通过pom中的
每个packaging 包含了一些绑定到特定phase的goals,例如jar packaging 会绑定下面的goals到默认的
lifecycle的build phases
process-resources resources:resources
compile compiler:compile
process-test-resources resources:testResources
test-compile compiler:testCompile
test surefire:test
package jar:jar
install install:install
deploy deploy:deploy
当packaging 的值是pom时,只给install 和deploy 绑定goals,
为了使某些packing types 可用,可能也需要在
plugins 是给maven提供goals的artifacts. 每个plugin 可以有一个或多个goals.
如果每个phase 绑定了多个goals,来自于packaging 的先执行,在pom中配置的后执行。可以使用
放在
一些phase 默认绑定了一些goals,对于default lifecycle,这些绑定依赖于packaging value.
clean clean:clean
Default Lifecycle Bindings - Packaging ejb / ejb3 / jar / par / rar / war
process-resources resources:resources
compile compiler:compile
process-test-resources resources:testResources
test-compile compiler:testCompile
test surefire:test
package ejb:ejb or ejb3:ejb3 or jar:jar or par:par or rar:rar or war:war
install install:install
deploy deploy:deploy
Default Lifecycle Bindings - Packaging ear
generate-resources ear:generate-application-xml
process-resources resources:resources
package ear:ear
install install:install
deploy deploy:deploy
Default Lifecycle Bindings - Packaging maven-plugin
generate-resources plugin:descriptor
process-resources resources:resources
compile compiler:compile
process-test-resources resources:testResources
test-compile compiler:testCompile
test surefire:test
package jar:jar and plugin:addPluginArtifactMetadata
install install:install
deploy deploy:deploy
Default Lifecycle Bindings - Packaging pom
package site:attach-descriptor
install install:install
deploy deploy:deploy
Site Lifecycle Bindings
site site:site
site-deploy site:deploy