Maven学习笔记(三)--生命周期和插件

来源:互联网 发布:dns服务器的端口 编辑:程序博客网 时间:2024/06/12 01:38

Maven生命周期是对所有的构建过程进行抽象和统一。Maven的生命周期是抽象的,实际任务由插件完成。

Maven有三套独立的生命周期

clean生命周期--清理项目

default生命周期--定义了构建时执行的所有步骤

site生命周期--建立和发布项目站点

注:Maven各个生命周期都是独立的,但是一个周期内部的阶段是有依赖关系的。

插件绑定

默认绑定

clean与maven-clean-plugin:clean绑定,仅有clean这一个目标

site生命周期site阶段与maven-site-Plugin:site,deploy阶段和maven-site-Plugin:deploy绑定

default生命周期各阶段与插件目标绑定关系比较复杂。

compile阶段--maven-complier-plugin:compile

test阶段--maven-surefire-plugin:test

package阶段--maven-jar-plugin:jar

install阶段--maven-install-plugin:install

deploy阶段--maven-deploy-plugin:deploy

自定义绑定

用户可以自定义选择将某个插件绑定到某个生命周期上,<plugin></plugin>标签中指定

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-source-plugin</artifactId>

<executions>

<exexution>

<id>attach-source</id>

<phase>verify</phase>

<goals>

<goal>jar-no-fork</goal>

</goals>

</execution>

</executions>

</plugin>

查看插件默认的绑定阶段

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

POM插件全局配置

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compile-plugin</artifactId>

<version></version>

<configuration>

<source>1.5</source>

<target>1.5</target>

</configuration>

POM插件中的任务配置

同一个插件绑定不同的任务阶段,可以执行不同的任务

<plugins>

<plugin>

<groupId></groupId>

<artifactId></artifactId>

<version></version>

<executions>

<execution>

<id>ant-validate</id>

<phase>validate</phase>

<goals><goal>run</goal></goals>

<configuration>

<tasks><echo>I am bound to validate</echo></tasks>

</configuration>

</execution>

<execution>

<id>ant-verify</id>

<phase>verify</phase>

<goals><goal>run</goal></goals>

<configuration>

<tasks><echo>I am bound to verify</echo></tasks>

</configuration>

</execution>

</executions>

</plugin>

</plugins>

获取插件信息

1.在线获取--http://maven.apache.org/plugins/index.html

2.使用maven-help-plugin描述插件   mvn help:describe -Dplugin=org.apache.maven.plugins:maven-complier-plugin:2.1 -Dgoal=compile -Ddetail

插件解析机制

同依赖的远程仓库类似,插件也有自己的远程仓库。插件的远程仓库使用pluginRepositories和pluginRepository配置。

插件的默认groupId为: org.apache.maven.plugins (不推荐省略)

解析机制:如果是核心插件,超级POM中已经设定了版本。如果是非核心插件,未指定版本,maven会检查仓库中所有可用版本,做出选择。仓库元数据中记录了 插件的所有版本。maven3开始解析到release版本。


插件前缀:maven插件可以指定前缀<prefix>,默认groupidorg.apache.maven.plugins和org.codehaus.mojo两个,也可以通过settings.xml指定

<pluginGroups>

<pluginGroup>com.your.plugins</pluginGroup>

</pluginGroups>

===========================================

maven测试插件 maven-surefire-plugin   命令:mvn package -DskipTests

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>mave-surefire-plugin</artifactId>

<version>2.5</version>

<configuration>

<includes>**/*Tests.java</includes>

<excludes>

<exclude>*ServiceTest.java</exclude>

<exclude>TempDaoTest.java</eclude>

</excludes>

<skipTests>true</skipTest>  //跳过测试

</configuration>

</plugin>

默认情况下,target/surefire-reports目录下会生成两种格式的错误报告。

===========================================================

测试类重用:打包包含测试代码

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-jar-plugin</artifactId>

<version>2.2</version>

<executions>

<goals><goal>test-jar</goal></goals>

</executions>

</plugin>




0 0
原创粉丝点击