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

时间:2015-09-16 21:15:40

标签: java maven

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

  1. 检查来源中没有未提交的更改
  2. 检查是否没有SNAPSHOT依赖项
  3. 将POM中的版本从x-SNAPSHOT更改为新版本(系统将提示您输入要使用的版本)
  4. 转换POM中的SCM信息以包含标记的最终目的地
  5. 针对修改后的POM运行项目测试以确认一切正常[/ li>]
  6. 提交修改后的POM
  7. 使用版本名称标记SCM中的代码(将提示)
  8. 将POM中的版本转换为新值y-SNAPSHOT(也会提示这些值)
  9. 提交修改后的POM
  10. 我的问题是:

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

    当我使用

      

    mvn release:prepare release:perform

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

    我知道maven-versions-plugin:use-latest / next-snapshot但它不适用于我。

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

    • 01.04.05-SNAPSHOT(发布前)
    • 01.04.05(发布版本)
    • 01.04.06-SNAPSHOT(发布后)

2 个答案:

答案 0 :(得分:0)

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

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

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

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

但是,在所有情况下,如果将项目配置为multi module project

,您将有更大的成功机会

答案 1 :(得分:0)

Thx Hilikus的回答。

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

解决方案是在版本插件旁边使用release插件:

  1. mvn -B updates:use-release -Dincludes = my.packages。* versions:commit
  2. git commit
  3. mvn -B -Dusername = xxx -Dpassword = xxx -DreleaseVersion = 04.05.39 -DdevelopmentVersion = 04.05.40-SNAPSHOT release:clean release:prepare release:perform -Dresume = false
  4. mvn -B版本:use-next-version -DallowSnapshots = true -Dincludes = my.packages。* versions:commit
  5. git commit
  6. git push

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

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