Maven发布流程替代方案

问题:

20个不同的JAVA项目,具有很多相互依赖关系.每次代码锁定后都有错误修复,我们必须根据需要发布一堆工件,具体取决于更改的工件.例如,如果工件3有解锁并需要修复错误,我们将需要发布(使用maven发布插件)项目3,4,5,6,7和10(因为4,5,6,7和10是取决于3).团队之间的协调以完成这项任务需要时间.加上每个神器的建造需要20-40分钟.

我们想缩短这个过程.我们正在考虑以下事项:

>将快照用于带有时间戳的工件
>使用jenkins作业和标记svn将单个工件升级到存储库.
>使用mvn version:set命令为需要依赖项的每个项目更新依赖项.

有没有人实现类似于上述的解决方案?如果是这样,你遇到了什么问题?

任何其他建议不会重建工件,并允许我们只需点击一个按钮释放15-20个工件将有帮助:)

最佳答案 不幸的是,如果更改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来处理这些事情.

但是我想到了另外一个问题:为什么你的构建需要这么长时间?你可能会调查他们为什么花这么长时间来减少释放时间.

点赞