Maven实战学习笔记(生命周期和插件)

一、生命周期

Maven拥有三套相互独立的生命周期,他们分别为clean、default和site。clean生命周期的目的是清理项目,default生命周期的目的是构建项目,而site生命周期的目的是建立项目站点。三套生命周期相互独立,且每个生命周期中的命令按照顺序执行。

1、clean生命周期包含三个阶段:

pre-clean:执行一些清理前需要完成的工作;

clean:清理上一次构建生成的文件;

post-clean:执行一些清理后需要完成的工作。

2、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(处理项目测试资源文件) → generate-test-resources →process-test-resources → 

test-compile(编译项目的测试代码) → process-test-classes → test(使用单元测试框架运行测试,测试代码不会被打包或部署) → prepare-package →

package(接收编译好的代码,打包成可发布的格式,如JAR) → pre-integration-test → integration-test → post-integration-test → verify → install(将包安装到Maven本地仓库,供其他Maven项目使用) → 

deploy(将最终的包复制到远程仓库,供其他开发人员和Maven项目使用)

3、site生命周期的目的是建立和发布项目站点,Maven能够基于POM所包含的信息,自动生成一个友好的站点。

pre-site:执行一些生成站点前的工作;

site:生成项目站点文档;

post-site:执行生成站点后的工作;

site-deploy:将站点发布到服务器上。


二、命令行与生命周期

命令行执行的命令就是调用Maven生命周期的不同阶段。

如:mvn clean(调用执行clean生命周期的pre-clean和clean阶段),

mvn clean install(调用clean生命周期的pre-clean和clean阶段,default生命周期的validate到install所有阶段)。


三、插件

1、插件目标

Maven执行生命周期的任务是由插件来完成的,每个插件都会包含好几个功能

(如maven-dependency-plugin,它能够分析项目依赖;列出项目依赖树;列出项目所有已解析的依赖等),

每个功能就是一个插件目标。上述dependency插件对应的目标依次为:dependency:analyze、dependency:tree、dependency:list,

这是一种通用写法,冒号前面是插件前缀,冒号后面是该插件的目标

2、插件绑定

Maven生命周期中的每一个命令都与某个插件的目标绑定。在内置绑定中可以看到如下内置绑定(打包类型为jar):

当然,我们也可以在maven生命周期中自定义绑定插件目标,如下:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-source-plugin</artifactId>
	<version>2.1.2</version>
	<executions>
		<execution>
			<id>attach-sources</id>
			<phase>verify</phase>
			<goals>
				<goal>jar</goal>
			</goals>
		</execution>
	</executions>
</plugin>
executions下的每一个execution子元素可用来配置执行一个任务。该配置中配置了一个id为attach-sources的任务,通过phase配置,将其绑定到verify生命周期阶段上,再通过goals配置指定要执行的插件目标。

有时候,即使不通过phase元素配置生命周期阶段,插件目标也能够绑定到生命周期中去。

因为很多插件目标在编写时已经定义了默认绑定阶段,

可以使用maven-help-plugin查看插件详细信息:

运行如下命令:mvn help:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin:2.1.1 -Ddetail 。

3、插件配置

几乎所有Maven插件的目标都有一些可配置的参数,Maven命令中使用-D参数,并伴随一个参数键=参数值的形式。

例如:mvn install -Dmaven.test.skip=true

maven-surefire-plugin提供了一个maven.test.skip参数,当值为true的时候,就会执行跳过测试。

在pom中可以对插件进行全局配置,如下:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-compiler-plugin</artifactId>
	<version>2.3.1</version>
	<configuration>
		<source>1.6</source>
		<target>1.6</target>
		<encoding>UTF-8</encoding>
	</configuration>
</plugin>
在任何阶段都使用Java1.6进行编译。

4、获取插件信息

引用之前使用过的命令

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin:2.1.1 -Ddetail ,

利用maven-help-plugin插件可以获取想要查看插件的详细信息,这里执行maven-help-plugin的describe目标,

在命令行输出maven-source-plugin的简要信息,包括该插件的坐标、目标前缀(Goal Prefix,相当于代替了某个插件)和目标等,如图:

另外,在描述插件的时候,还可以省去版本信息,让Maven自动获取最新版本来进行表述:

mvn help:describe -Dplugin=org.apache.maven.plugins:maven-source-plugin

进一步简化,可以使用插件目标前缀替换坐标:

mvn help:describe -Dplugin=source

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值