maven学习笔记(四)生命周期和插件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ld705454682/article/details/82051934

1生命周期

maven有三个相互独立的生命周期:clean(清理项目),default(构建项目),site(建立项目站点)

每个生命周期包含一些阶段:

(1)clean

(2)default(只列出几个重要的阶段)

process-sources:处理项目主资源文件。一般是对src/main/resources目录的内容进行变量替换等工作后复制到项目输出的主classpath目录中。

compile:编译项目的主源码。编译src/main/java下的Java文件至项目输出的主class目录

process-test-sources:处理项目测试资源文件。对src/test/resources/目录的内容进行变量替换等工作后,复制到项目输出的测试classpath目录中。

test-compile:

test:使用单元测试框架运行测试,测试代码不会被打包或部署

package:接受编译好的代码,打包成可发布的格式,如jar

install:将包安装到maven本地仓库,供本地其他maven项目使用

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

(3)site:maven能够基于pom所包含的信息自动生成项目站点。

site:生成项目站点文档

site-deploy:将生成的项目站点发布到服务器上。

2命令行与生命周期

$mvn clean:执行clean生命周期的clean之前的阶段

$mvn test:执行default生命周期的test之前阶段

$mvn clean install:clean生命周期的pre-clean,clean阶段,default生命周期的从validate到install阶段

$mvn clean deploy site-deploy:clean生命周期的clean(之前)阶段,default生命周期的deploy阶段,site生命周期的site-deploy阶段

3插件目标(插件前缀:插件目标)

一个插件往往能完成多个功能,每个功能就是一个插件目标。

例如:maven-dependency-plugin

插件目标:dependency:analyze ,dependency:tree,dependency:list 

maven-compiler-plugin,插件目标compiler:compile

maven-surefire-plugin,插件目标surefire:test

4插件绑定

maven生命周期与插件相互绑定,以完成实际的构建任务。例如default生命周期的compile阶段,与maven-compiler-plugin插件绑定,实现项目编译任务。

(1)内置绑定

maven为一些主要的生命周期阶段绑定了很多插件目标。

(2)自定义绑定

用户可以自己选择将某个插件目标绑定到生命周期的某个阶段。

例:创建项目源码jar包,内置的插件绑定关系中没有这一任务,需要用户自行配置。

maven-source-plugin的jar-no-fork目标能够将项目的主代码打包成jar文件,可以将其绑定到default生命周期的verify阶段上,在执行完成测试后和安装构件之前创建源码jar包。

  <build>
  	<plugins>
  		<plugin>
  			<groupId>org.apache.maven.plugins</groupId><!-- maven官方插件的groupId,官方插件可以省略 -->
  			<artifactId>maven-source-plugin</artifactId>
  			<version>2.1.1</version>
  			<executions><!-- 插件执行配置,它的每个execution子元素可以用来配置执行一个任务 -->
  				<execution>
  					<id>attach-sources</id><!-- 任务id为attach-sources -->
  					<phase>verify</phase><!-- 绑定到verify阶段 -->
  					<goals>
  						<goal>jar-no-fork</goal><!-- 任务要执行的插件目标 -->
  					</goals>
  				</execution>
  			</executions>
  		</plugin>
  	</plugins>
  </build>

有的插件编写时已经定义了默认绑定阶段,此时不配置phase也可,可以使用maven-help-plugin查看插件目标的默认绑定阶段。

运行命令如下:

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

注:将插件绑定到生命周期阶段,其执行順序由生命周期阶段的先后順序决定,当多个插件被绑定到同一个生命周期阶段,其执行順序由插件声明的先后順序决定。

5插件配置

(1)命令行插件配置
可以在maven命令中使用-D参数,并伴随一个参数键=参数值的形式。

参数-D是java自带的,其功能是通过命令行设置一个java系统属性,maven在准备插件的时候检查系统属性,便实现了插件参数的配置。

(2)pom中插件全局配置

  	<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
  	</plugins>

配置maven-compiler-plugin编译java1.5版本的源文件,生成与jvm1.5兼容的字节码文件。 

这种全局配置,所有使用该插件目标的任务,都会使用这些配置。

(3)pom中插件任务配置

为某个插件任务配置特定的参数。

插件全局配置,configuration元素位于plugin元素下面,而为某个插件任务配置的configuration元素则位于execution元素下。

6获取插件信息

(1)apache官方插件:

详细列表:http://maven.apache.org/plugins/index.html

下载:http://repo1.maven.org/maven2/org/apache/maven/plugins

(2)使用maven-help-plugin描述插件

$ mvn help:describe-Dplugin=org.apache.maven.plugins:maven-compiler-plugin:2.1

$ mvn help:describe-Dplugin=groupId:artifactId:version

省去版本信息,获取最新版本描述:

$ mvn help:describe-Dplugin=groupId:artifactId

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

$ mvn help:describe-Dplugin=compiler

查看插件目标信息:

$ mvn help:describe-Dplugin=compiler-Dgoal=compile

输出更详细信息,可以加上detail参数:

$ mvn help:describe-Dplugin=compiler-Ddetail

猜你喜欢

转载自blog.csdn.net/ld705454682/article/details/82051934