2009-09-15 82 views

回答

14

您可以通过定义自定义生命周期并在通过execute批注执行Mojo之前调用该生命周期来完成此操作。

在你的Mojo,在Javadoc声明要执行的生命周期:

/** 
* Invoke the custom lifecycle before executing this goal. 
* 
* @goal my-goal 
* @execute lifecycle="my-custom-lifecycle" phase="process-resources" 
*/ 
public class MyMojo extends AbstractMojo { 
... 

然后定义中的src/main /资源/ META-INF /行家/ lifecycle.xml一个自定义的生命周期。

生命周期有点像plexus的components.xml,但允许您为这些目标指定配置。

请注意,语法与pom中的插件配置略有不同。您使用以下方法定义一个目标:作为分隔符而不是指定单独的groupId,artifactId和版本元素,否则它与pom中的插件配置的执行元素基本相同。你甚至可以在lifecycle.xml中使用一些属性(尽管可能不是所有的属性都支持,我需要检查它)。

下面的示例与进程中的资源相不同的配置调用的依赖性插件两次:

<lifecycles> 
    <lifecycle> 
    <id>download-dependencies</id> 
    <phases> 
     <phase> 
     <id>process-resources</id> 
     <executions> 
      <execution> 
      <goals> 
       <goal> 
       org.apache.maven.plugins:maven-dependency-plugin:copy-dependencies 
       </goal> 
      </goals> 
      <configuration> 
       <includeScope>compile</includeScope> 
       <includeTypes>war</includeTypes> 
       <overWrite>true</overWrite> 
       <outputDirectory> 
       ${project.build.outputDirectory}/wars 
       </outputDirectory> 
      </configuration> 
      </execution> 
      <execution> 
      <goals> 
       <goal> 
       org.apache.maven.plugins:maven-dependency-plugin:copy-dependencies 
       </goal> 
      </goals> 
      <configuration> 
       <includeScope>compile</includeScope> 
       <includeTypes>jar</includeTypes> 
       <overWrite>true</overWrite> 
       <outputDirectory> 
       ${project.build.outputDirectory}/jars 
       </outputDirectory> 
      </configuration> 
      </execution> 
     </executions> 
     </phase> 
    </phases> 
    </lifecycle> 
</lifecycles> 

通过这种方法,依赖插件将被用在叉形的process-resources相位每个配置调用一次生命周期(全部发生在Mojo定义的执行中)。

在lifecycle.xml中,可以定义多个阶段以及生命周期的每个阶段的多个执行。可用阶段在Maven lifecycle中定义。

您可以在Maven书籍的Creating a Custom Lifecycle部分找到关于生命周期的更多信息。尽管如此,它并没有给出详尽的清单。唯一的其他参考我知道如果是从Maven 2 alpha,所以可能不是最新的

+0

谢谢这看起来应该工作。你知道我在哪里可以找到在lifecycle.xml中允许哪些内容? – 2009-09-15 15:13:04

+0

我已经添加了一些引用到答案的结尾。我不知道规范的引用,虽然 – 2009-09-15 15:39:59

+0

存在Maven的Lifecycle.xml引用[here](http://maven.apache.org/ref/2.2.1/maven-plugin-descriptor/lifecycle-mappings.html),尽管它没有比例子提供的更多的信息。 – prunge 2012-03-13 04:02:41

相关问题