6

我正在将一个 ant 项目转换为一个 Maven 项目。这个项目与我通常转换的项目不同,因为它的发布非常频繁,通常每天 8-10 次。

通过发布,我的意思是生成的 jar 被打包并包含在生产环境中。这个项目是一个叶子项目,所以它不发布任何 API,它只使用它。它最多也是另外两个项目的运行时依赖项。

我想要一个版本控制方案,其中:

  • 它很容易部署,而无需强迫开发人员考虑分配给项目的版本号,因为该数字没有意义;
  • 很容易将这个项目的最新版本包含为依赖项,而不会不断地增加依赖项版本;

依赖版本很可能不是 a -SNAPSHOT,因为这会与maven-release-plugin我们用于其他项目的冲突,但我愿意接受建议。

4

1 回答 1

5

实际上,您可以使用x-SNAPSHOTversion 并且仍然使用maven-release-plugin。只需使用mvn release:preparebeforemvn release:perform来准备您的版本并将 pom 中的版本从新版本更改x-SNAPSHOT为新版本(系统将提示您选择要使用的版本)。您可以查看对 maven-release-plugin 的介绍,以快速了解release:preparerelease:perform.

然后,要在不不断更新依赖版本的情况下包含最新版本,您可以使用如下代码段中的依赖范围,其中我们指定范围 Junit 3.8 - Junit 4.0:

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>[3.8,4.0)</version>
  <scope>test</scope>
</dependency>

逗号之前或之后的版本不是必需的,表示 +/- 无穷大。例如,[4.0,)表示任何大于或等于 4.0 的版本。

就个人而言,我不太喜欢使用依赖范围,因为我发现它会导致构建重现性问题并使构建更加脆弱。

但是您可能有充分的理由使用它们。

于 2009-10-06T09:50:16.543 回答