`

05 Maven插件

阅读更多

一、.插件目标
      插件以独立的构件构件形式存在,为了能够利用代码,一个插件往往能够完成不能任务的多个功能。每个功能就是就是一个插件目录。

 

 
二、.插件绑定
      Maven的生命周期和插件相互绑定,用以完成实际的构建任务。准确的说,是生命周期的阶段和插件的目标相互绑定。


1.内置绑定
      为了让用户不使用任何配置就能构建Maven项目,Maven在核心为一些主要的生命周期阶段绑定了插件目标。
      其中clean和site的生命周期绑定的插件都比较简单直接。唯有default各种阶段绑定的插件和项目的打包类型有关。

 

 

 

 

2.自定义绑定
      用户可以自己选择将插件目标绑定到某个阶段上。如创建项目源码的jar包,用户需要自行配置绑定。代码如下:

<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>

      executions下execution用来配置执行一个任务。该例中配置了一个id为attach-sources的任务,通过phase配置,将其绑定到verify阶段,再通过goals配置要执行插件目标。
      有时不通过phase元素指定生命周期的阶段,插件目标也能够绑定到生命周期中。原因是有很多插件的目标在编写时已定义了默认绑定阶段。
如果多个目标被绑定到阶段,按照目标的声明顺序执行。

 

 

三.插件配置
      可通过配置一些参数来改变插件的行为。


1.命令行插件配置
      在Maven命令中使用-D参数,并伴随着一个“参数键=参数值”。如:

 

mvn install -Dmaven.test.skip=true 

maven-surefire-plugin的maven.test.skip为true时,会跳过测试。参数-D是Java自带的。

 

 

 

 

2.POM中插件全局配置
      并不是所有插件参数都适合通过命令行设置。有些参数从项目创建到项目发布很少改变,针对这种情况,在POM文件中配置参数更方便。
      用户可能声明插件时,对此插件进行一个全局配置。例如,我们通常会配置maven-compile-plugin告诉按JAVA 1.5版本进行编译:

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

 

3.POM中插件任务配置
      除了可为整个插件配置全局参数,还可为某个插件任务配置特定的参数。以maven-antrun-plugin为例。它有一个目标,可用来在Maven中调用ant任务。用户将maven-antrun-plugin:rrun绑定到多个生命周期的阶段上,再加上不同的配置,就可让Maven在不同的生命阶段执行不同的任务。如:

<executions>
 <execution>
  <id>ant-validate</id>
  <phase>validate</phase>
  <goals>
   <goal>run</goal>
  </goals>
  <configuration>
   <tasks>
    <echo>I'm bound to validate phase</echo>
   </tasks>
  </configuration>
 </execution>
 <execution>
  <id>ant-verify</id>
  <phase>verify</phase>
  <goals>
   <goal>run</goal>
  </goals>
  <configuration>
   <tasks>
    <echo>I'm bound to verify phase</echo>
   </tasks>
  </configuration>
 </execution>
</executions>

 

四.获取插件信息
1.在线插件信息
       可从官方网站获取插件的帮助信息。


2.使用maven-help-plugin
mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compile-plugins:2.1
其中的版本信息可省略;
也可使用插件的目标前缀替换坐标,如:
mvn help:describe -Dplugin=compiler
如果仅想获取某个目标的信息,可加上goal参数:
mvn help:describe -Dplugin=compiler -Dgoal=compile

 

五.从命令行调用插件
mvn -h 获取mvn使用帮助
可使用“插件前缀:gloa”或"groupid:artifactid:version:goal"

 

六.插件解析机制
1.插件仓库
      插件仓库使用pluginRepositories和pluginRepositorie来配置,除了标签名不一样,其他的和普通的远程仓库没有区别。

 

2.插件默认groupId
       在POM中配置插件时,如果该插件是Maven的官方插件(即groupId是org.apache.maven.plugins),可省略groupId配置。

 

3.解析插件版本
      如果没有指定插件的版本,默认使用release版本,也就是最新的发布版。

 

4.解析插件前缀
      插件前缀和groupid:artifactId是一一对应的。这种对应关系保存在插件仓库的元数据中。这个元数据位于groupId/maven-metadata.xml中。由于大多数插件来自特定的地方,Maven默认使用org.apahce.maven.plugins和org.codehaus.mojo两个groupId中的元数据。可通过配置setting.xml,让Maven检查其他groupid上的元数据。如:

<settings>
<pluginGroups>
 <pluginGroup>
  com.your.plugins
 </pluginGroup>
</pluginGroups>
</settings>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics