【问题标题】:Can Maven 2 use two different versions of a build plugin in the same project?Maven 2 可以在同一个项目中使用两个不同版本的构建插件吗?
【发布时间】:2010-12-26 22:03:06
【问题描述】:

我的项目需要新版本的 maven 构建插件的功能来实现其一些目标,但新版本在其他目标之一上失败(由于插件中的错误)。作为修复错误之前的解决方法,我想使用旧版本的插件运行损坏的目标。 编辑:更具体地说,我需要使用 gwt-maven-plugin 1.1 版运行 generateAsync 目标,并使用 1.2-SNAPSHOT 版运行所有其他目标。

当我声明一个单独的插件版本来执行损坏的目标时,Maven 仍然使用损坏的版本。 还有其他方法可以解决这个问题吗?

<plugin>
 <groupId>org.codehaus.mojo</groupId>
 <artifactId>gwt-maven-plugin</artifactId>
 <version>1.1</version>
   <executions>
     <execution>
       <goals>
         <!-- this goal is broken in 1.2-SNAPSHOT -->
         <goal>generateAsync</goal>
       </goals>
     </execution>
   </executions>
   ...
 </plugin>
 <plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>gwt-maven-plugin</artifactId>
   <version>1.2-SNAPSHOT</version>
   <executions>
     <execution>
       <goals>
         <goal>compile</goal>
         <!-- <goal>generateAsync</goal> -->
         <goal>test</goal>
       </goals>
     </execution>
   </executions>
   ...
</plugin>

【问题讨论】:

    标签: maven-2


    【解决方案1】:

    您必须不在您的 POM 中两次声明同一个插件。可以使用一个 &lt;plugin&gt; 块和两个 &lt;executions&gt; 块,但这不能解决您的问题,所以,不,没有办法实现您想要的。

    但是您是否测试了 gwt-maven-plugin 1.2 候选版本?它今天已在此处提供http://people.apache.org/~nicolas/staging/,投票时间为 72 小时,欢迎测试。也许您的问题在此版本中已解决(不确定,因为您没有提供有关该问题的太多详细信息,而且我在最近关闭的插件的issue tracker 中没有找到与gwt:generateAsync 相关的任何问题或打开)。

    如果您有一个未在issue tracker 中列出的特定问题,这似乎是让人们意识到它的最佳时机,尤其是如果您希望在 1.2 版中解决它。球在你的球场上。

    【讨论】:

    • RC 也失败了。刚刚发布了一个问题。
    • 好倡议恕我直言。祝你好运!
    【解决方案2】:

    我认为您正在寻找的是插件配置中的 phase 元素。 目标元素指示您要执行插件的哪个目标,阶段执行您想要的操作,即指示应该在哪个阶段执行插件的目标。

    你可以看到更多关于这个here。

    【讨论】:

    • 目标都在其默认生命周期阶段运行,我对此很好。问题是我需要使用 1.1 版插件和其他 1.2-SNAPSHOT 版运行一些目标。
    • 那么配置文件对您有用吗?您将无法同时执行这两个目标,但我想这比手动更改 pom 要好得多。
    • 是的,我正在考虑配置文件——只是希望有一个更清洁的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多