首页 文章

以批处理模式发布 - 将依赖项版本更改为SNAPSHOTS

提问于
浏览
0

从Maven Release插件 - Prepare a Release document开始,准备发布版将经历以下发布阶段:

  • 检查源中没有未提交的更改

  • 检查没有SNAPSHOT依赖项

  • 将POM中的版本从x-SNAPSHOT更改为新版本(系统将提示您输入要使用的版本)

  • 转换POM中的SCM信息以包括标记的最终目标

  • 针对修改后的POM运行项目测试,以确认一切正常

  • 提交修改后的POM

  • 使用版本名称标记SCM中的代码(将提示)

  • 将POM中的版本转换为新值y-SNAPSHOT(也会提示这些值)

  • 提交修改后的POM

我的问题是:

有没有办法在批处理模式下为依赖项执行第8步?我知道如何使用参数(developmentVersion)将项目版本更改为SNAPSHOT,但我不知道如何更改依赖项 .

我用的时候

mvn release:准备发布:执行

maven告诉我,我的pom中有SNAPSHOT依赖项,我可以为它们提供发布和开发版本 . 但有没有办法以批处理模式提供它们?

我知道maven-versions-plugin:use-latest / next-snapshot但它不适合我 .

我的版本号流程应如下所示:

  • 01.04.05-SNAPSHOT(发布前)

  • 01.04.05(发布版)

  • 01.04.06-SNAPSHOT(发布后)

2 回答

  • 0

    没有简单的方法可以做到这一点 . 困难来自于每个工件都有不同的版本 . 发布插件更适合发布具有相同生命周期的工件 .

    现在,如果您可以使它们具有相同的生命周期,那么您需要做的是创建一个多模块项目并从根pom中释放 . 这种情况下的诀窍是,由于所有模块及其依赖项具有相同的版本,因此您只应在 <parent> 部分中指定版本以将其涓滴化,并在 <dependency> 部分中使用版本 ${project.version} . 这样你可以将所有内容一起发布,发布插件不需要更改依赖项版本,因为它已经是一个变量 .

    如果工件没有相同的生命周期,那么另一个替代方案仍然是创建一个多模块项目并以交互模式释放(即不是来自jenkins或构建服务器),在这种情况下,只要所有工件都在同一个反应器中,release插件将查询每个子模块的版本 .

    最后,如果您不能进行交互式发布,那么我认为有一种方法可以通过提供artifactId和每个模块的版本来在命令行中指定所有子模块的版本,但我无法在文档中找到该设置 . 我提到它以防你想进一步研究它

    但是,在所有情况下,如果将项目配置为multi module project,您将有更好的成功机会

  • 0

    Thx Hilikus的回答 .

    回答我的问题:从SNAPSHOT设置依赖项仅存在于交互模式 . 使用release插件无法在批处理模式下执行此操作 .

    对此的解决方案是在版本插件旁边使用release插件,如下所示:

    • mvn -B updates:use-release -Dincludes = my.packages . * versions:commit

    • git commit

    • mvn -B -Dusername = xxx -Dpassword = xxx -DreleaseVersion = 04.05.39 -DdevelopmentVersion = 04.05.40-SNAPSHOT release:clean release:prepare release:perform -Dresume = false

    • mvn -B版本:use-next-version -DallowSnapshots = true -Dincludes = my.packages . * versions:commit

    • git commit

    • git push

    • 将更改依赖关系更改为SNAPSHOT并将其释放到快照工件是在提交作业(Jenkins)之后完成的 .

    将有4个提交git,但工作将完成 . 我错误的版本格式(01.01.01 insted of 1.1.1 - PM不允许我更改它...)我需要使用use-next-version,快照允许设置为true . 在use-next-snapshot中有NumberFormatException . 项目版本将在使用发布插件时更改为SNAPSHOT,并且依赖项将在提交作业后更改为SNAPSHOT .

相关问题