gpt4 book ai didi

Maven 发布过程替代

转载 作者:行者123 更新时间:2023-12-01 04:01:04 25 4
gpt4 key购买 nike

问题:
20 个不同的 JAVA 项目,相互依赖很多。每次在代码锁定后修复错误时,我们都必须根据需要发布一堆 Artifact ,具体取决于哪个 Artifact 发生了变化。例如,如果 Artifact 3 有解锁并需要修复错误,我们将需要发布(使用 maven 发布插件)项目 3、4、5、6、7 和 10(因为 4、5、6、7 和 10取决于 3)。团队之间进行协调以完成这项任务需要时间。加上构建每个 Artifact 需要 20-40 分钟。

我们想缩短这个过程。我们正在考虑以下几点:

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

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

    任何其他不会重建 Artifact 并允许我们通过单击按钮释放 15-20 个 Artifact 的建议都会有所帮助:)

    最佳答案

    不幸的是,如果你改变你的 pom 文件,你必须重建你的 Artifact 。否则,您在 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 以从中“发布”,但您不会重建您的 Artifact 。比以下内容在您的版本控制中,并且可能是您对其进行标记。

    项目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 状态的 Artifact ,但您的版本控制说明了不同的内容。这只是问题的一个非常简单的例子。如果你有更多的项目等,事情会变得更糟。

    此外,我会重新考虑更改项目结构,因为根据您所写的有关依赖项的内容,这些项目看起来应该一起发布,因此从它们中创建多模块构建可能是一个好主意。

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

    但是我想到了另一个问题:为什么你的构建需要这么长时间?您可能会调查他们为什么要花这么长时间并总体上减少发布时间。

    关于Maven 发布过程替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13465188/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com