4

问题: 20个不同的JAVA项目,有很多相互依赖关系。每次在代码锁定后出现错误修复时,我们都必须根据需要发布一些工件,具体取决于哪些工件发生了更改。例如,如果工件3有一个解锁并需要一个错误修复,我们将需要释放(使用Maven发布插件)项目3,4,5,6,7和10(因为4,5,6,7和10是依赖于3)。团队之间协调完成这项任务需要时间。加造每件神器需要20-40分钟。Maven发布过程替代

我们希望缩短这一过程。与时间戳文物

  • 促进个体的文物使用詹金斯的工作和标签SVN版本库到

    1. 使用快照:我们正在考虑以下的。使用MVN版本
    2. 更新的依赖关系:对于需要依赖每个项目设定命令。

    有没有人实现类似如上所述的溶液?如果是这样,你遇到了什么问题?

    不会重建的文物,让我们在按钮的点击会有所帮助:)

  • 回答

    2

    不幸的是你,如果你改变重建你的神器释放15-20文物任何其他建议您pom文件。否则,您的VCS中的状态并不代表您正在使用的状态。

    让我们做出了榜样。项目A,项目B上的一个其中B dependends:

    项目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.你的仓库中的状态代表着状态/依赖于SNAPSHOT的pom文件的状态。

    现在您将更改项目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状态的工件,但是您的版本控制表示不同的东西。这只是问题的一个非常简单的例子。如果你有更多的项目等,事情会变得更糟。

    此外,我会recosinder考虑改变项目结构,原因根据你写的依赖关系,它看起来像项目应该一起发布,所以它可能是一个好主意,创建一个多模块构建他们。

    此外,重建可以通过在Jenkins中使用适当的作业来完成,它可以处理依赖性,或者您可以考虑使用build pipeline plugin来处理这样的事情。

    但我还有一个疑问:为什么你的构建需要这么长时间?你可以调查他们为什么要花这么长时间,并减少释放时间。

    +0

    非常感谢您的回复。我将尽快详细阐述这个问题和我们提出的解决方案。我想我没有清楚地解释这个问题。但是你是正确的,我们将需要重建神器。我会尽快更新你的。再次感谢。 – user971652