【问题标题】:Maven - run plugin once per profileMaven - 每个配置文件运行一次插件
【发布时间】:2011-06-08 11:58:36
【问题描述】:

我有一个 Maven 模块负责从其他几个模块(战争)构建一些文档。一切正常 - > 在构建时我结合了几个插件,如 javadoc、wadl、程序集等来执行我想要的。现在看来我需要为多个版本构建相同的文档(所以我们有主干和旧版本的文档)。我尝试使用如下配置的配置文件。问题是即使两个配置文件都处于活动状态,每个插件也只执行一次(即使它们具有不同的执行 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> 

【问题讨论】:

    标签: maven


    【解决方案1】:

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

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

    【讨论】:

    • 你是对的。最干净的方法是使用单独的文档模块。我更好奇这是否可能。理论上每个模块可以有多个执行,所以这应该有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 2012-09-03
    • 2020-01-02
    • 1970-01-01
    相关资源
    最近更新 更多