当前位置: 首页 > 知识库问答 >
问题:

使用发布版本插件完全自动化发布过程

常英资
2023-03-14

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

我想以一种发布过程以批处理模式运行的方式(不需要从控制台询问任何问题)自动化哈德逊中Maven模块的发布过程。目前我使用常见步骤发布:准备

在准备步骤中:

  • 对于与当前模块和父模块的groupId匹配的所有依赖项,请将-SNAPSHOT替换为正式版本(例如版本:use-释放-D包括=???)。

发布后的某些时间:

  • 对于与当前模块和父模块的组ID匹配的所有依赖项,请将发布版本替换为快照版本(例如,版本:使用最新快照…)

示例:

<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>

我觉得它需要混合

版本:使用-发布scm:提交发布:准备发布:执行版本:使用-最新快照scm:提交

但我不确定这样做的最佳方式是什么。尤其是尽可能少的提交会更好:困难在于在版本检查之后运行目标。

从某种意义上说,所描述的项目不是一个多模块项目,父POM不是通过<代码>

 .
 |
 +-- 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。


共有1个答案

国兴贤
2023-03-14

您遇到的一个简单问题是,您的家长与您的孩子的版本号不同,这对于多IT模块构建来说是错误的。多模块构建旨在使多个具有相同发布过程的相关模块具有相同的版本号。如果你遵循这个准则,你就不需要版本插件,你只需要通过发布:准备和发布:执行就可以了。

更新:在进一步讨论之后,我建议设置一组新的哈德逊作业,其中包含模块(下游/上游DEP)之间的依赖关系然后对每个哈德逊作业进行发布,触发作业字符串中的下一个作业,以此类推。这也要求在版本控制中有单独的模块和单独的区域。否则,这场战斗将失去与马文和复杂的生活。

 类似资料:
  • 我们在maven发行版和maven版本插件上有一个问题。在詹金斯,我们想做释放自动按下一个按钮。为了消除快照依赖关系,我们希望使用maven versions插件。假设我们有两个项目A(最新版本0.0.1,最新快照0.0.2-快照)和项目B,它们依赖于Projecta-0.0.2-快照,我们希望发布项目B,我们如何将项目Bs依赖项升级到最新可用的发布版本?maven versions插件目标“us

  • 所有POM都有作为它们的版本,也在dependencies标签下。它通过上传到Nexus repo。 我们最近开始做。因此,所有20个父POM现在都是和版本,因为它们都位于nexus中。所有标记现在都指向 开发人员不想指向发布版本。他们需要来自同行的edge开发版本,不管它是否不稳定。 SCM只希望指向版本,因为他必须每周执行一次,但由于指向快照版本而失败。 现在我知道了版本插件,但问题是,我应该

  • 问题内容: 我有一个在Jenkins中构建的应用程序,并且想要部署到Octopus。在执行此操作时,我必须创建一个发送到Octopus的发行版本。对于此次发布的版本我必须给一个号码(例如:) 如何使版本号自动递增?(例如:我已经构建了应用程序,并在Octopus中创建了发行​​版本号4.8,下次创建应用程序时,我想创建发行版号4.9) 谢谢 问题答案: 您可以使用job属性存储版本,然后在每次运行

  • 我以一个新的gradle用户的身份创建gradle版本,但我过去曾与maven合作过。 我试图重现maven发布插件的动作: 将分支版本更改为发行号(在svn提交) 如您所见,我正在使用: Nexus OSS作为版本控制库 SVN作为scm Gradle(2.8) 我正试图通过这两个插件实现我的目标: > 将分支版本更改为发行号(在svn提交) 创建标签(位于svn) 将分支版本更改为新快照编号(

  • 版本号 采用三位版本号,分别是主版本号、次版本号、修订版本号。例如 5.1.2。 参见: http://semver.org/lang/zh-CN/。 主版本号:主版本号内的所有版本必须相互兼容;与其它主版本号不一定完全兼容,尽量向下兼容。 次版本号:代表新特性增强。版本号越大特性越丰富。 修订版本号:代表BugFix版本。只做bug修复使用,版本号越大越稳定。 版本维护 最多同时维护两个版本。

  • 我正在使用maven发布插件进行发布管理。我运行mvn release:prepare on release分支。这样做的结果是,我有一个带有发布版本的git标记,以及带有下一个开发快照版本的发布分支。 现在,我想改变这个过程,以便发布分支总是有正式版本(没有SNAPSHOT版本的碰撞)。 这样做的原因是在生成构建时,我希望发布分支和发布标签具有相同的HEAD提交。 如果我可以跳过碰撞版本的最后一