使用Maven发布项目:不同版本的工件

时间:2014-10-29 20:39:10

标签: maven teamcity maven-release-plugin

我有一个包含多个模块的maven项目。当我发布它时,我只是将模块的版本从SNAPSHOT更改为发布版本,然后确定。这可以使用Maven Release Plugin完成。

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

  

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

条件是您使用存储库管理器(例如Artifactory)。 Maven知道在这个仓库中搜索最新的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"

相关问题