首页 > 解决方案 > 在本地开发期间将特定的 Maven 依赖项设置为最新版本

问题描述

鉴于我的多模块 CI 具有以下依赖项:

<groupId>my_group</groupId>
<artifactId>artifact1</artifactId>
<version>2.0.0-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>my_group</groupId>
        <artifactId>artifact2</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

在我的 CI 上,我想编译工件 2。但是,在我的开发中,我很少接触它,因为编译该工件需要一些外部依赖项和大量时间,我非常想跳过它并使用任何最新版本。

到目前为止,我有一个使用 RELEASE 覆盖 artifact2 版本的配置文件,例如:use-released-artifact2 my_group artifact2 RELEASE

在本地,我将使用 -Puse-released-artifact2 运行。伟大的。

现在 maven3 弃用了 RELEASE 和 LATEST 伪版本,我正在尝试找到一个解决方案:

  1. 不会留下修改后的 pom.xml 文件被 git 识别为“已修改”。过去导致开发人员无意中提交了错误的文件。出于同样的原因,我不能只在这个文件中添加忽略。
  2. 不需要开发人员遵循发布时间表并在他们的“mvn clean install...”行中替换参数。
  3. 不会像版本范围那样经过冗长的解析。
  4. 不会强迫我在每个版本上提交一个版本(除了版本插件不支持升级到版本“next-1”afaik)。

有任何想法吗?


澄清:

我根本不想运行 artifcat2 build 。此外,artifact2 在存储库中的 2.0.0-SNAPSHOT 中不可用,因为它尚未发布。我真的很想从存储库中获取最新版本(例如 1.5.7)来针对它编译 artifact1。

标签: gitmaven

解决方案


我的建议如下。

  1. 查看整个多模块项目。
  2. 一次构建所有模块。
  3. 然后,使用一个标志(如此处所述)仅为每个后续构建构建 artifact1。

所以第一次构建需要一些时间,但之后您只需要构建 artifact1 并且 artifact2 的 SNAPSHOT 将在您的本地存储库中随时可用。

当然,通过这种方法,您使用的是最新版本的 artifact2,而不是最新的发布版本,但实际上,这并不重要。


推荐阅读