Maven - 每个配置文件运行一次插件

时间:2011-06-08 11:58:37

标签: maven

我有一个Maven模块负责从其他几个模块(战争)中构建一些文档。一切正常 - >在构建我结合几个插件,如javadoc,wadl,汇编等来执行我想要的。现在看来我需要为多个版本构建相同的文档(因此我们有trunk和旧版本的doc)。我尝试使用如下配置的配置文件。问题是即使两个配置文件都是活动的,每个插件只执行一次(即使它们具有不同的执行ID)。知道为什么以及如何触发每个插件每个配置文件运行一次?

<dependencies>
  <!-- common dependencies -->
</dependencies>
<properties>
  <!-- ${versionToBuild} is defined by each profile -->
  <output.name>doc-${versionToBuild}</output.name> 
  <!-- other common properties or based on a property defined by profile -->
</properties>
 <build>
    <pluginManagement>
        <plugins>
        <!-- configuration for plugins based on $versionToBuild -->
        </plugins>
    </pluginManagement>
 </build>
 <profiles>
   <profile>
     <id>doc-for-1.1</id>
     <activation>
       <activeByDefault>true</activeByDefault>
     </activation>
     <properties>
       <versionToBuild>1.1-SNAPSHOT</versionToBuild>
     </properties>
     <dependencies>
       <!-- the artefacts of my project in v1.1 -->
     </dependencies>
     <build>
       <plugins>
         <plugin>
           <artifactId>maven-javadoc-plugin</artifactId>
         </plugin>
         <plugin>
           <groupId>com.sun.jersey.contribs</groupId>
           <artifactId>maven-wadl-plugin</artifactId>
         </plugin>
       <plugins>
     </build>
   </profile>
   <profile>
     <id>doc-for-1.2</id>
     <activation>
       <activeByDefault>true</activeByDefault>
     </activation>
     <properties>
       <versionToBuild>1.2-SNAPSHOT</versionToBuild>
     </properties>
     <dependencies>
       <!-- the artefacts of my project in v1.2 -->
     </dependencies>
     <build>
       <plugins>
         <plugin>
           <artifactId>maven-javadoc-plugin</artifactId>
         </plugin>
         <plugin>
           <groupId>com.sun.jersey.contribs</groupId>
           <artifactId>maven-wadl-plugin</artifactId>
         </plugin>
       <plugins>
     </build>
   </profile>
 </profiles> 

1 个答案:

答案 0 :(得分:1)

我不认为你可以做你想做的事情,而不会违背Maven的工作方式。合并重叠的插件配置(例如你的配置)确实很棘手。你可以将每个插件绑定到不同的默认阶段(确保它们与v1.1和v1.2不同),但它非常hacky。

相反,我建议在v1.1和v1.2的源代码控制上使用单独的分支,而不是将POM与版本历史记录紧密耦合。您只需通过签出相应的分支为每个版本构建文档。