标签:
Maven 的生命周期是对所有的构建过程进行抽象和统一。Maven 的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶段的执行顺序。
生命周期( Lifecycle ) |
阶段( Phase ) |
目标( Goa l) |
clean |
clean |
maven-clean-plugin:clean |
default |
process-resources |
maven-resources-plugin:resources |
compile |
maven-compiler-plugin:compile |
|
generate-test-resources |
maven-resources-plugin:testResouces |
|
test-compile |
maven-compiler-plugin:testCompile |
|
test |
maven-surefire-plugin:test |
|
package |
打包类型是jar时:maven-jar-plugin:jar; 打包类型是war时:maven-war-plugin:war |
|
install |
maven-install-plugin:install |
|
deploy |
maven-deploy-plugin:deploy |
|
site |
site |
maven-site-plugin:site |
site-deploy |
maven-site-plugin:deploy |
Maven 通过查询插件仓库的元数据才得知插件前缀对应插件的 groupId、artifactId,而如果插件是Maven的核心插件则在超级POM中已经定义了插件的版本,如果不是核心插件,则默认取最新的release版本 。
Maven的插件仓库默认是 http://repo1.maven.org/maven2/org/apache/maven/plugins/ 和 http://repository.codehaus.org/org/codehaus/mojo/,相应的查询插件仓库元数据时会默认使用 org.apache.maven.plugins 和 org.codehaus.mojo 两个 groupId。但也可以通过配置 settings.xml 让Maven检查其他 groupId 上的插件仓库元数据,如:
<settings> <pluginGroups> <pluginGroup>com.your.plugins</pluginGroup> </pluginGroups> </settings>
这样配置后,Maven就不只检查 org/apache/maven/plugins/maven-metadata.xml 和 org/codehaus/mojo/maven-metadata.xml,还会检查com/your/plugins/maven-metadata.xml
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.10</version> <configuration> <skip>true</skip> </configuration> <executions> <execution> <id>run-test</id> <phase>test</phase> <goals> <goal>test</goal> </goals> <configuration> <skip>false</skip> <includes> <include>**/unit/**/*.java</include> </includes> </configuration> </execution> <execution> <id>run-integration-test</id> <phase>integration-test</phase> <goals> <goal>test</goal> </goals> <configuration> <skip>false</skip> <includes> <include>**/integration/**/*.java</include> </includes> </configuration> </execution> </executions> </plugin>
其中红色背景的 <skip>true</skip> 是为了让 Maven 的默认绑定(test阶段<-> maven-surefire-plugin:test 插件目标) 无效 (其实绑定仍然有效,只是执行时忽略执行罢了),而后面的 executions 块内容则增加了两个绑定,分别将 maven-surefire-plugin:test 插件目标绑定到 test 阶段和 integration-test 阶段,只是配置不一样了,分别执行unit包和integration包下的测试类。
标签:
原文地址:http://www.cnblogs.com/tannerBG/p/4235410.html