使用插件从Maven中的Nexus中挑选最新版本(非快照版本)

时间:2018-02-08 08:28:46

标签: java plugins maven-3 pom.xml

我正在使用 Maven 3.5 。我有一个多模块项目结构:模块A是父模块,有两个子模块B和模块C.

我的要求是:我想从Nexus获得某些第三方罐子的最新版本。这些基本上都是来自测试单位的罐子。请注意我不想拥有快照版本。

我读到在pom.xml中指定RELEASE不能与maven 3.x版本一起使用。但我尝试了它,它工作正常。 (仅使用IntelliJ获取信息) 1)那为什么它适合我?

2)我应该在Maven 3.5中使用RELEASE吗?

我还读到可以使用Maven“versions-maven-plugin”和Maven 3.x一起使用目标“use-latest-releases”。我不确定如何使用它。我试过以下:

在我的模块A的父pom.xml中:

<plugin>
   <groupId>org.codehaus.mojo</groupId>
   <artifactId>versions-maven-plugin</artifactId>
   <version>2.5</version>
   <executions>
      <execution>
         <goals>
            <goal>use-latest-releases</goal>
         </goals>
      </execution>
   </executions>
</plugin>

现在 3)我在子模块中的依赖关系的版本标签中应该如何以及如何指定C?我写了如下:

<properties>
    <!-- V dependencies -->
    <version.vvv.iii.piiii></version.vvv.iii.piiii>
</properties>

<dependency>
        <groupId>c.b.ttt</groupId>
        <artifactId>V-RApi</artifactId>
        <version>version.vvv.iii.piiii</version>      
 </dependency>

基本上我想知道如何实际使用这个特定的maven插件和目标。我为它阅读了Maven文档,但无法应用它。

1 个答案:

答案 0 :(得分:0)

1)它仍然有效,因为尚未禁用RELEASE版本功能(即使它是“不良做法”,因为它违反了可重复版本的原则)。在另一个问题中回答的人也报告RELEASE仍然有效:

How do I tell Maven to use the latest version of a dependency?

2)如果你使用RELEASE,那真的取决于你。请注意,没有可重复的构建被广泛认为是不好的做法。想象一下,测试团队改变他们的api并释放他们的jar。您重建了自己的项目,该项目需要测试团队jar的新版本,并且您的构建失败(即使您没有更改任何内容)。你必须权衡使用RELEASE的便利性。另外,为了最新版本(如果有很多版本)不断ping你的神器服务器会降低你的构建速度。

3)如果你打算使用精确的verison编号(而不是RELEASE),我认为这是最好的方法,那么它们应该在模块A(不是模块C)中定义,或者甚至是模块的父pom A(这就是我们在工作场所的表现)。在一个地方定义确切的版本号,并且在实际的模块层次中,通常是一件好事 - 它整洁且一致,不易出错和不一致。

编辑:

根据要求,以下是如何使用maven插件:mvn versions:use-latest-releases,也可能后跟mvn versions:commit

阅读文档,特别是“使用”页面:

http://www.mojohaus.org/versions-maven-plugin/

相关问题