如何升级maven插件的版本?

时间:2009-04-24 16:13:46

标签: java maven-2 build-process maven-ear-plugin

我正在使用maven-ear-plugin版本2.3.1 - 我知道有新版本可用:http://maven.apache.org/plugins/maven-ear-plugin/

我无法弄清楚如何升级到最新版本?

4 个答案:

答案 0 :(得分:42)

尽管已经获得了“已批准的答案”,但事实证明有AWESOME versions plugin处理无休止的版本维护问题。

对于那些懒惰的人来说,这里有一些目标:

  • 版本:display-dependency-updates 扫描项目的依赖项,并生成具有更新版本的依赖项的报告。
  • 版本:display-plugin-updates 扫描项目的插件,并生成那些具有更新版本的插件的报告。
  • 版本:display-property-updates 扫描项目并生成用于控制工件版本的属性的报告,以及哪些属性具有更新的版本。
  • 版本:update-parent 更新项目的父节,以便它引用最新的可用版本。例如,如果您使用公司根POM,如果您需要确保使用最新版本的公司根POM,则此目标会很有用。
  • 版本:update-properties 更新项目中定义的属性,以便它们对应于特定依赖项的最新可用版本。如果必须将一套依赖项全部锁定到一个版本,这将非常有用。
  • 版本:update-child-modules 更新项目子模块的父部分,以使版本与当前项目的版本匹配。例如,如果您有一个聚合器pom,它也是它聚合的项目的父级,并且子级和父级版本不同步,则此mojo可以帮助修复子模块的版本。 (注意,如果您的项目因为版本不匹配而无法构建,那么您可能需要使用-N选项调用Maven以运行此目标。)
  • 版本:lock-snapshots 在pom中搜索所有-SNAPSHOT版本,并将其替换为该-SNAPSHOT的当前时间戳版本,例如: -20090327.172306-4
  • 版本:unlock-snapshots 在pom中搜索所有时间戳锁定的快照版本,并将其替换为-SNAPSHOT。
  • 版本:set 可用于从命令行设置项目版本。
  • 版本:use-releases 在pom中搜索已发布的所有-SNAPSHOT版本,并将其替换为相应的发行版本。
  • 版本:use-next-releases 在pom中搜索所有非SNAPSHOT版本的新版本,并将其替换为下一个版本。
  • 版本:use-latest-releases 在pom中搜索所有非SNAPSHOT版本的新版本,并将其替换为最新版本。
  • 版本:use-next-snapshots 在pom中搜索所有非SNAPSHOT版本,这些版本是较新的-SNAPSHOT版本,并将其替换为下一个-SNAPSHOT版本。
  • 版本:use-latest-snapshots 在pom中搜索所有非SNAPSHOT版本,这些版本是较新的-SNAPSHOT版本,并用最新的-SNAPSHOT版本替换它们。
  • 版本:use-next-versions 在pom中搜索所有较新版本的版本,并将其替换为下一版本。
  • 版本:use-latest-versions 在pom中搜索所有版本较新的版本,并将其替换为最新版本。

答案 1 :(得分:15)

默认插件版本继承自Super POM,您可以使用mvn help:effective-pom进行检查。

如果要覆盖其中提供的版本,请将其添加到您的POM:

<project>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.3.1</version>
      </plugin>
    </plugins>
  </build>
</project>

将版本替换为您需要的版本。

答案 2 :(得分:8)

详细介绍了如何选择插件的版本,以及有关superpom中插件版本的讨论here

实际上当前选择的答案并不完全正确。它应该是

<project>
  <build>
   <pluginManagement>
    <plugins>
      <plugin>
        <artifactId>maven-ear-plugin</artifactId>
        <version>2.3.1</version>
      </plugin>
    </plugins>
   </pluginManagement>
  </build>
</project>

我解释了为什么here

“常规插件部分还允许定义版本和默认配置,这就是混乱的地方。在这里定义插件版本和默认配置在技术上是有效的,但我发现更容易理解pom遵循本指南:

如果插件块未定义执行(因此绑定maven在生命周期中执行某些操作),请将该块放在pluginManagment中“

答案 3 :(得分:3)

某些maven插件仅限于maven版本。例如,通常这里的项目使用Maven 2.0.4,它仅限于使用war插件2.0.2 - 这适用于叠加。然而,无论Maven 2.0.9使用哪种2.1-alpha都没有 - 所以我们不得不手动降级。除非另有说明,否则Maven将尝试根据其版本使用最新版本的插件。