gpt4 book ai didi

maven - 使用 release+versions 插件完全自动化发布过程

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

如果 Maven 大师社区可以帮助我完成以下任务,那就太好了。

我想以批处理模式运行发布过程的方式自动化 hudson 中 Maven 模块的发布过程(不需要从控制台询问任何内容)。目前我使用常用​​步骤release:prepare (使用 <preparationGoals>versions:update-parent clean verify</preparationGoals> 将父级更新到提交前的最新版本)+ release:perform .但是我希望 Maven 执行以下操作:

在准备步骤中的某个时候:

  • 对于与 groupId 匹配的所有依赖项当前模块和父模块,替换 -SNAPSHOT发布版本(例如 versions:use-releases -Dincludes=??? )。

  • 发布后的某个时候:
  • 对于与 groupId 匹配的所有依赖项当前模块和父模块,用 -SNAPSHOT 替换发布版本版本(例如 versions:use-latest-snapshots ... )。

  • 例子:
    <parent>
    <groupId>org.mycompany.myproject</groupId>
    <artifactId>myproject-parent</artifactId>
    <version>1.0-SNAPSHOT</version>
    </parent>

    <dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>myproject-api</artifactId>
    <version>1.1-SNAPSHOT</version>
    </dependency>

    在模块被标记之前转换为:
    <parent>
    <groupId>org.mycompany.myproject</groupId>
    <artifactId>myproject-parent</artifactId>
    <version>1.0</version>
    </parent>

    <dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>myproject-api</artifactId>
    <version>1.1</version>
    </dependency>

    并在发布成功后转化为:
    <parent>
    <groupId>org.mycompany.myproject</groupId>
    <artifactId>myproject-parent</artifactId>
    <version>1.1-SNAPSHOT</version>
    </parent>

    <dependency>
    <groupId>${project.groupId}</groupId>
    <artifactId>myproject-api</artifactId>
    <version>1.2-SNAPSHOT</version>
    </dependency>

    我觉得它需要混合
    versions:use-releases scm:commit release:prepare release:perform versions:use-latest-snapshots scm:commit
    但我不确定这样做的最佳方法是什么。尤其是提交越少越好:困难在于 reparationGoals-SNAPSHOT 之后运行版本检查。

    所描述的项目不是一个多模块项目,因为父 POM 没有通过 <modules> 引用它的子项目。 .单片机结构如下:
     .
    |
    +-- myproject-parent
    | +-- pom.xml
    +-- myproject-api
    | +-- pom.xml
    +-- myproject-impl
    +-- pom.xml

    依赖项是:
    myproject-api → myproject-parent
    myproject-impl → myproject-parent
    myproject-impl → myproject-api

    该项目的父 POM ( myproject-parent) 将很少发布,因此将首先发布。然后 myproject-api (如有必要),然后 myproject-impl .

    最佳答案

    您遇到的一个简单问题是您的 parent 与您的 child 的版本号不同,这是多模块构建的错误方式。多模块构建旨在具有许多相关的模块,这些模块具有相同的发布过程,随后具有相同的版本号。如果您遵循该指南,则不需要版本插件,您只需通过 release:prepare 和 release:perform 进行发布就是这样。

    更新:
    在进一步讨论之后,我建议设置一组新的 Hudson 作业,其中包含模块之间的依赖关系(下游/上游部门),并在每个 hudson 作业上发布,触发作业字符串中的下一个作业,依此类推.这个先决条件是在版本控制中也有单独的模块和单独的区域。否则这场战斗将与 Maven 一起失败并使生活复杂化。

    关于maven - 使用 release+versions 插件完全自动化发布过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10540977/

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