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

问题描述 投票:2回答:1

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

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

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

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

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

在我的模块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文档,但无法应用它。

java plugins maven-3 pom.xml
1个回答
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)中定义,或者甚至是模块A的父pom(那是我们如何在我的工作场所这样做)。在一个地方定义确切的版本号,并且在实际的模块层次中,通常是一件好事 - 它整洁且一致,不易出错和不一致。

编辑:

根据要求,这里是如何使用maven插件:mvn versions:use-latest-releases,可能还有mvn versions:commit

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

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

© www.soinside.com 2019 - 2024. All rights reserved.