【问题标题】:Releasing the project with Maven: different release versions of artifacts使用 Maven 发布项目:工件的不同发布版本
【发布时间】:2014-10-29 20:39:09
【问题描述】:

我有一个包含多个模块的 Maven 项目。当我发布它时,我只需将模块的版本从 SNAPSHOT 更改为发布的版本就可以了。这可以通过 Maven 发布插件来完成。

问题的出现是因为我拥有的一些依赖项实际上是由我们的其他程序员组开发的工件。因此它们的版本可能经常改变,这是与其他依赖项相反的行为,例如 hibernate 的工件版本。在发布的那一刻,我想使用那些快速变化的库的一些可用版本。应该是最后一个了。可能他们会专门为我的版本发布他们的库的新版本。 请注意,他们的库是一个单独的 Maven 项目,由他们控制单独的版本。

我现在所能做的就是手动检查该依赖项的哪个版本是最后一个版本,然后手动将其放入我的 POM 中。它不是那么方便。可能有更好的方法用 Maven 和 TeamCity 来组织它?我也可以更新其他组的工件的版本吗?他们的版本应该来自他们的 Snapshot 版本,或者来自他们部署到 Nexus 中的最后一个版本。

【问题讨论】:

  • 你如何运行你的版本?你使用像 hudson/jenkins 这样的工具吗?以及您在 Artifactory/Nexus 中将您使用的罐子放在哪里(经常更换)?
  • 我使用 TeamCity。是的,经常变化的 jars 是由一些团队在一些存储库中开发的,然后部署到 Nexus 中。

标签: maven teamcity maven-release-plugin


【解决方案1】:

您可以使用versions-maven-plugin 自动更新外部依赖项。

【讨论】:

    【解决方案2】:

    如前所述,您可以使用Versions Maven Plugin,更具体地说,您需要versions:update-properties。正如你可以阅读手册,它

    将属性设置为特定工件的最新版本。

    条件是您使用存储库管理器(例如 Artifactory)。 Maven 知道要在这个 repo 中搜索最新的 aritfacts。

    在运行 maven-release-plugin 之前,您需要运行更新依赖项的版本插件。例如,您使用相关参数运行versions:update-properties

    如果您想打印最新版本的工件,相同版本的插件是您的朋友。查看并阅读我在上面发送给您的链接;相关命令为versions:display-dependency-updates

    如果您想选择性地仅打印您的工件最新版本,您可以使用属性设置其版本。例如,如果您有依赖项 JAR X,请在主 pom 中编写如下内容:

    <dependency>
       <groupId>myGroup</groupId>
       <artifactId>X</artifactId>
       <version>${x.version}</version>
    </dependency>
    
    <properties>
       <x.version>3.1.0.RELEASE</x.version>
    </properties>
    

    那你就用versions:display-property-updates -DincludeProperties="x.version"

    【讨论】:

    • 好主意!看起来我可以为要替换的版本指定 groupID 和 artifactID。但首先我想打印它们。您是否知道是否可以打印最新版本的工件,但仅限于某些组:工件,因为打印所有内容太多了。
    • 我已经更新了我的答案(至于您的打印问题)。如果这个答案有帮助,那就接受/+1吧:-)
    • 你的意思是版本:显示依赖更新?但是没有包含参数..
    • 是的,版本:显示依赖更新。包含参数是什么意思?
    • OhadR,您是版本插件大师,非常感谢! :)
    猜你喜欢
    • 1970-01-01
    • 2017-10-17
    • 2011-06-18
    • 2020-02-27
    • 1970-01-01
    • 2013-01-16
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    相关资源
    最近更新 更多