Maven插件详解

来源:互联网 发布:正商集团怎么样知乎 编辑:程序博客网 时间:2024/06/06 14:10

插件与插件目标

Maven定义了三套相互独立的生命周期,每套生命周期都有多个生命周期阶段,而这些阶段都是抽象的,不做任何工作。真正完成工作的是绑定在生命周期阶段的插件目标。插件以独立的构件形式存在,一个插件可能有一个或多个插件目标。生命周期的某个阶段可以绑定一个或多个插件目标;一个插件目标也可以绑定到一个或多个生命周期阶段。他们是多对多的关系。

插件绑定

内置绑定

Maven遵循约定优于配置的原则,在生命周期的核心阶段都默认绑定了插件目标,具体如下:

clean生命周期默认绑定:

生命周期阶段 插件目标 pre-clean clean maven-clean-plugin:clean post-clean

site生命周期默认绑定:

生命周期阶段 插件目标 pre-site site maven-site-plugin:site post-site site-deploy maven-site-plugin:deploy

default生命周期默认绑定(packaging为jar):

生命周期阶段 插件目标 process-resources maven-resources-plugin:resources compile maven-compiler-plugin:compile process-test-resoueces maven-resources-plugin:testResources test-compile maven-compile-plugin:testCompile test maven-surefire-plugin:test package maven-jar-plugin:jar install maven-install-plugin:install deploy maven-deploy-plugin:deploy

maven官网生命周期与绑定文档
maven官网default生命周期阶段与插件绑定文档

自定义绑定

除了内置绑定外,我们还可以自定义绑定,如下所示,将maven-source-plugin插件的jar-no-fork插件目标绑定到了default生命周期的verify阶段:

<build>    <plugins>        <plugin>           <groupId>org.apache.maven.plugins</groupId>           <artifactId>maven-source-plugin</artifactId>           <version>2.1.1</version>           <executions>              <execution>                <id>attach-sources</id>                <phase>verify</phase>                <goals>                  <goal>jar-no-fork</goal>                </goals>              </execution>           </executions>        </plugin>    </plugins>  </build>

插件参数配置

命令行方式

可以在命令行中定义插件的参数,如:

mvn clean install -DskipTests=true

上面例子中的skipTests即为maven-surefire-plugin插件的skipTests参数的表达式。使用上面的参数配置,将跳过测试阶段。

pom中配置

也可以在pom文件中配置插件的参数,如:

 <plugin>    <groupId>org.apache.maven.plugins</groupId>    <artifactId>maven-surefire-plugin</artifactId>    <version>2.5</version>    <configuration>        <skipTests>true</skipTests>    </configuration> </plugin>

上面的配置和在命令行设置“-DskipTests=true”作用是一样的,只不过这样在pom中设置了之后,每一次都会跳过测试阶段。

在线获取插件信息

maven官网插件详情

(声明:本文是学习了大牛徐晓斌的Maven3 in Action之后的总结,仅用于学习交流。)

0 0