【问题标题】:Maven2: How to be sure Maven build is using a specific plugin version?Maven2:如何确保 Maven 构建使用特定的插件版本?
【发布时间】:2009-08-27 15:19:07
【问题描述】:

我刚刚发现 Maven 插件管理听起来很奇怪。

在进行站点生成时,我想使用特定版本的 maven 站点插件,以使特定的功能正常工作。 假设我想使用这个插件的 2.0.1 版本。

如果我使用 POM 的报告部分来使用以下命令生成我的项目站点:

mvn site

这很好用。我的意思是使用的插件版本是我想要的 2.0.1。这是我的 POM 配置站点插件的摘录:

<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <version>2.0.1</version>
        </plugin>
    </plugins>
</reporting>

现在,如果我希望我的网站在构建生命周期的特定阶段生成,比如说准备包(和目标阶段),我在该部分中添加以下部分:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-site-plugin</artifactId>

        <executions>
            <execution>
                <phase>prepare-package</phase>
                <goals>
                    <goal>stage</goal>
                </goals>
            </execution>
        </executions>
     </plugin>
</plugins>

在这里,我坚持使用来自 Super POM 的 maven 站点插件版本,即。 2.0-beta-7。 即使我尝试添加指定我真的想使用版本 2.0.1 的配置,它仍然使用 2.0-beta-7。 我还尝试在该部分中添加版本,因为报告部分中使用的配置也应该应用于构建部分。但这也不起作用。

也许我错过了一些东西,如果我错了,请纠正我,但这看起来像一个错误。 Maven 端是否需要修复要在构建过程中使用的插件版本?

谢谢!

【问题讨论】:

    标签: maven-2 maven-plugin


    【解决方案1】:

    如果你在 pom 中定义一个 pluginManagement 部分,你可以声明任何插件使用的版本,这将覆盖从超级 POM 继承的版本

    例如:

    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-site-plugin</artifactId>
          <version>2.0.1</version>
        </plugin>       
      </plugins>
    </pluginManagement>
    

    您可以参考documentation 了解有关配置pluginManagement 的一些背景信息。

    【讨论】:

    • 非常感谢您的快速回复。这会覆盖来自 Super Pom 的默认值。
    【解决方案2】:

    我认为您需要使用“pluginManagement”部分来设置插件的全局版本号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-26
      • 2014-04-13
      • 2021-10-02
      • 2015-03-07
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多