maven pom进阶教程 - phase与goal

###lifecycle maven定义了生命周期lifecycle的概念,一个生命周期又分为很多个阶段,比如在packaging类型为jar的工程下,执行mvn package这个命令, 它会执行资源处理,编译,打包等步骤(当然不止这三个步骤)。资源处理,编译,打包这些步骤就称之为phase。关于lifecycle和phase的更多资料,可以在官上网查到
http://maven.apache.org/components/ref/3-LATEST/maven-core/lifecycles.html
http://maven.apache.org/components/ref/3-LATEST/maven-core/default-bindings.html
###goal maven的功能是由plugin来完成的。一般的plugin都会包含多个功能,每个功能都包含一个名称,称之为goal, ###phase、plugin、goal关系 几个关键的phase都会与特定的plugin的某个goal绑定,比较资源处理阶段process-resources与插件maven-resources-plugin的resources进行了绑定,因此执行到process-resources阶段时,maven将调用maven-resources-plugin插件,执行它的resources功能,拷贝资源文件。
###mvn compile与mvn compiler:compile 这两个命令都会执行编译过程,但是前者包含更多的执行步骤。 ###mvn compile
这里的compile是指编译阶段,它会从初始阶段一直执行到编译阶段.compile阶段之前还有这些阶段:
<phase>validate</phase>
<phase>initialize</phase>
<phase>generate-sources</phase>
<phase>process-sources</phase>
<phase>generate-resources</phase>
<phase>process-resources</phase>
因此,mvn compile会执行以上各个阶段所绑定的插件,默认情况下,上面的阶段中只有process-resources绑定了插件,即maven-resources-plugin, 所以这条命令会先拷贝资源文件,然后再去编译, 即mvn compile隐式的调用了resources插件,即使没有在pom.xml中定义resources插件。
###mvn compiler:compile
这条指令中,compiler是指插件的名称,compile是指插件的goal。最终这条指令只是去执行maven-resources-plugin插件的compile目标,并不会拷贝资源文件.
同样的,平常执行的mvn exec:java, 是指执行插件exec-maven-plugin的java目标,它并不会去编译代码

###查看phase默认插件的execution的idmaven pom进阶教程 - 插件与继承(plugin & inherite)

###禁用默认插件的方法 方法1: 改掉默认插件配置的phase(官方文档上并没有写这个方法)

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-jar-plugin</artifactId>
	<version>3.0.2</version>
	<executions>
		<execution>
			<id>default-jar</id> <!-- default-jar是maven默认打包jar的execution的id -->
			<phase>none</phase> <!-- 随便写,只要不存在就行 -->
		</execution>
	</executions>
</plugin>

方法2: 设置skip为true, 只有部分插件支持这个参数, 使用之种方法之前,最好先去查阅一下plugin的配置资料

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-resources-plugin</artifactId>
	<version>3.0.2</version>
	<executions>
		<execution>
			<id>default-resources</id><!-- process-resources阶段的默认有execution的id -->
			<configuration>
				<skip>true</skip> <!--跳过本次任务-->
			</configuration>
		</execution>
	</executions>
</plugin>

###修改默认插件的参数 与上一节类似,指明execution的id为默认id 比如,将拷贝资源的操作更改到validate阶段执行

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-resources-plugin</artifactId>
	<version>3.0.2</version>
	<executions>
		<execution>
			<id>default-resources</id><!-- process-resources阶段的默认有execution的id -->
			<phase>validate</phase>
		</execution>
	</executions>
</plugin>

转载于:https://my.oschina.net/u/2343729/blog/830929

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值