问题: 20个不同的JAVA项目,具有很多相互依赖关系。每次代码锁定后都有错误修复,我们必须根据需要发布一堆工件,具体取决于更改的工件。例如,如果工件3有解锁并需要修复错误,我们将需要发布(使用maven发布插件)项目3,4,5,6,7和10(因为4,5,6,7和10是取决于3)。团队之间的协调以完成这项任务需要时间。加上每个神器的建造需要20-40分钟。
我们想缩短这个过程。我们正在考虑以下事项:
有没有人实施类似于上述的解决方案?如果是这样,你遇到了什么问题?
任何其他不会重建工件并允许我们通过点击按钮释放15-20个工件的建议会有所帮助:)
答案 0 :(得分:2)
不幸的是,如果更改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>
但你也没有重建你的aritfact。结果是您的存储库确实包含表示SNAPSHOT状态的工件,但您的版本控制说明了不同的东西。这只是问题的一个非常简单的例子。如果你有更多的项目等,事情会变得更糟。
此外,我会重新思考如何更改项目结构,因为根据您所写的关于依赖项的内容,看起来这些项目应该一起发布,因此最好从它们创建多模块构建。
此外,重建可以通过在Jenkins中使用可以处理依赖关系的适当作业来完成,或者您可以考虑使用build pipeline plugin来处理这些事情。
但是我想到了另外一个问题:为什么你的构建需要这么长时间?您可以调查他们为什么花这么长时间并减少所有人的发布时间。