Maven的生命周期是抽象的,这意味这生命周期本身不做任何实际的工作,在Maven的设计中,实际的任务都交由插件来完成。这种思想和设计模式中的模版方法(Template Method)非常类似
三套生命周期
clean生命周期
pre-clean 执行一些清理前需要完成的工作
clean 清理上一次构建生成的文件
post-clean 执行一些清理后需要完成的工作
default生命周期
validate
initialize
generate-sources
process-sources 处理项目主资源文件。一般来说,是对src/main/resources目录的内容进行变量替换等工作后,复制到项目输出的主classpath目录中。
generate-resources
process-resources
compile 编译项目的主源码。一般来说,是编译src/main/java目录想的Java文件至项目输出的主classpath目录中
process-classes
generate-test-sources
process-test-sources 处理项目测试资源文件。一般来说,是对src/test/resources目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中。
generate-test-resources
process-test-resources
test-compile 编译项目的测试代码。一般来说,是编译src/test/java目录下的Java文件至项目输出的测试classpath目录中。
process-test-classes
test 使用单元测试框架运行测试,测试代码不会被打包或部署
prepare-package
package 接受编译好的代码,打包成可发布的格式,如JAR
pre-integration-test
integration-test
post-integration-test
verify
install 将包安装到Maven本地仓库,供本地其它Maven项目使用
deploy 将最终的包复制到远程仓库,供其它开发人员和Maven项目使用
详细
site生命周期
pre-site 执行一些在生成站点之前需要完成的工作。
site 生成项目站点文档
post-site 执行一些在生成站点之后需要完成的工作。
site-deploy 将生成的项目站点发布到服务器上。
内置绑定
默认jar,还有war、pom、maven-plugin、ear等
详细 #Built-in_Lifecycle_Bindings
自定义绑定
如生成一个项目的源码jar包,内置的插件并没有涉及这一任务,因此需要用户自行配置。maven-source-plugin可以完成此任务,它的jar-no-fork目标可以将项目的主代码打包成jar文件,可以绑定到default生命周期的verify阶段上,在执行完集成测试后和安装构件之前创建源代码jar包。
org.apache.maven.plugins
maven-source-plugin
2.1.1
attache-sources
verify
jar-no-fork
配置插件的基本坐标,还有插件执行配置,executions下每个execution子元素可以用来配置执行一个任务。该例子中配置了一个id为attache-sources的任务,通过phase配置 ,将其绑定到verify生命周期阶段上,再通过goals配置指定要执行的插件的目标。运行mvn verify 就能看到输出。如果多个目标被绑定到同一个阶段,这些插件的声明顺序决定了目标的执行顺序。
命令行插件配置
$mvn install-Dmaven.test.skip=true
-D参数,并伴随一个参数键=参数值的形式
POM中插件全局配置
适合从项目创建到项目发布都不会改变,或者很少改变,不适合每次都在命令行中输入
org.apache.maven.plugins
maven-compiler-plugin
2.1
1.5
配置了maven-compile-plugin告诉它编译java1.5版本的源文件,生成与JVM1.5兼容的字节码文件。
POM中插件任务配置
org.apache.maven.plugins
maven-antrun-plugin
1.3
ant-validate
validate
run
I'm bound to validate phase.
ant-verify
verify
run
I'm bound to verify phase.
获取插件信息
详细
下载
托管在Codehaus上的Mojo项目
详细
下载
命令行下使用的是插件目标参数的表达式 没有表达式的只能通过POM配置,如surefire:test skip参数表达式为${maven.test.skip} 命令行-Dmaven.test.skip=true
$mvn help: describe-Dplugin = org.apache.maven.plugins: maven-compiler-plugin:2.1
省去版本信息,就可以得到最新的版本描述,可以使用插件目标前缀替换坐标
$mvn help: describe-Dplugin =compiler
如果只想要描述某个插件目标的信息,可以加上goal参数
$mvn help: describe-Dplugin=compiler-Dgoal=compile
输出详细信息
$mvn help: describe-Dplugin=compiler-Ddetail
mvn-h 显示mvn命令帮助
Maven内置插件仓库配置
central
Maven Plugin Repository
default
false
never
如果是官方maven插件 ,在pom配置插件时候,可以省略groupId
让Maven在解析插件仓库元数据的时候,也检查其他groupId上的插件仓库元数据
com.your.plugins
这样Maven就不仅仅会检查org/apache/maven/plugin/maven-metadata.xml和org/codehaus/mojo/maven-metadata.xml,还会检查com/your/plugins/maven-metadata.xml.
阅读(1836) | 评论(0) | 转发(0) |