不幸的是,如果你改变你的 pom 文件,你必须重建你的工件。否则,您在 VCS 中的状态并不代表您正在使用的状态。
让我们举个例子。项目 A,项目 B,其中 B 依赖于 A:
项目A:pom.xml
<version>1.0-SNAPSHOT</version>
Some dependencies etc.
项目B:pom.xml
<version>1.0-SNAPSHOT</version>
Some dependencies etc.
<dependency>
<groupId>project.a</groupId>
<artifactId>A</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
现在您构建项目 A 和 B。存储库中的状态表示 pom 文件的状态及其对 SNAPSHOT 的状态/依赖关系。
现在您将更改项目 A 以从中“发布”,但您不会重建您的工件。比以下内容在您的版本控制中,并且可能是您对其进行标记。
项目A:pom.xml
<version>1.0</version>
Some dependencies etc.
其次,您对项目 B 执行相同操作:项目 B:pom.xml
<version>1.0</version>
Some dependencies etc.
<dependency>
<groupId>project.a</groupId>
<artifactId>A</artifactId>
<version>1.0</version>
</dependency>
但是您也不会重建您的人工制品。结果是您的存储库确实包含代表 SNAPSHOT 状态的工件,但您的版本控制说明了不同的内容。这只是问题的一个非常简单的例子。如果你有更多的项目等,事情会变得更糟。
此外,我会重新考虑更改项目结构,因为根据您所写的有关依赖项的内容,这些项目看起来应该一起发布,因此从它们中创建多模块构建可能是一个好主意。
此外,可以通过在 Jenkins 中使用可以处理依赖项的适当作业来完成重建,或者您可以考虑使用构建管道插件来处理此类事情。
但是我想到了另一个问题:为什么你的构建需要这么长时间?您可能会调查他们为什么要花这么长时间并总体上减少发布时间。