Maven2:如何确保Maven构建使用特定的插件版本?

4
我发现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>

现在,如果我希望我的网站在构建生命周期的特定阶段生成,比如说 prepare-package 阶段(和 goal stage),我需要在 部分添加以下内容:
<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>

我目前遇到的问题是,maven站点插件版本被固定为Super POM中的2.0-beta-7版本。即使我尝试添加配置以明确使用2.0.1版本,它仍然使用2.0-beta-7版本。我也尝试在“构建”部分中添加版本,因为用于报告部分的配置应该也适用于构建部分。但这也不起作用。

也许我错过了什么,如果我错了,请纠正我,但这看起来像是一个bug。 Maven方面是否需要修复在构建过程中使用插件版本的问题?

谢谢!

2个回答

7
如果您在pom中定义了pluginManagement部分,您可以声明任何插件使用的版本,这将覆盖从超级POM继承的版本。
例如:
<pluginManagement>
  <plugins>
    <plugin>
      <artifactId>maven-site-plugin</artifactId>
      <version>2.0.1</version>
    </plugin>       
  </plugins>
</pluginManagement>

您可以参考文档了解如何配置pluginManagement的相关背景知识。

非常感谢您的快速回复。 这将覆盖来自Super Pom的默认值。 - reef

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接