可以Maven发布:以批处理模式准备更新快照版本到发布版本

时间:2012-07-13 16:58:43

标签: maven version release prepare

mvn release:prepare

它经常要求我解析快照依赖项。 有没有办法在批处理模式下执行此操作,以便maven自动使用关联的版本。即如果依赖项是1.0.0-SNAPSHOT,它会自动将此依赖项更新为1.0.0版本吗?

[INFO] Checking dependencies and plugins for snapshots ...
There are still some remaining snapshot dependencies.: Do you want to resolve them now?     (yes/no) no: : yes
Dependency type to resolve,: specify the selection number ( 0:All 1:Project Dependencies 2:Plugins 3:Reports 4:Extensions ): (0/1/2/3) 1: : 1
Resolve Project Dependency Snapshots.: 'com.my.project' set to release? (yes/no) yes: : yes
What is the next development version? (0.0.2-SNAPSHOT) 0.0.2-SNAPSHOT: : 0.0.2-SNAPSHOT

3 个答案:

答案 0 :(得分:8)

请注意,根据maven-release-plugin文档,您可以使用allowTimestampedSnapshots配置Maven忽略SNAPSHOT依赖项检查:

  

<强> allowTimestampedSnapshots:

     

是否允许有时间戳的SNAPSHOT依赖项。找到任何SNAPSHOT时默认为失败。

     
      
  • 类型:布尔值
  •   
  • 自:2.0-beta-7
  •   
  • 必填:否
  •   
  • 表达式:$ {ignoreSnapshots}
  •   
  • 默认值:false
  •   

或者只需运行以下命令:

  

mvn release:prepare -DignoreSnapshots = true

但是,仍然建议在执行最终版本之前解析所有SNAPSHOT依赖项,因为它是大多数人使用的约定。您应该始终考虑在开发阶段手动执行,而不是在发布阶段自动批处理,因为更改/升级项目的依赖项(您自己或第三方jar)有时可能会引入错误或不兼容并破坏您的项目,这通常需要开发人员的注意并在最终发布之前修复它们。

换句话说,依赖解析不是一个应该在发布阶段完成的任务,而且,它不是一个应该在没有开发人员注意的情况下自动完成的任务。

答案 1 :(得分:5)

您可以在发布前通过versions-maven-plugin更新SNAPSHOT。

答案 2 :(得分:3)

如果您的依赖项是您自己的程序,并且其生命周期与您尝试发布的程序紧密相关,那么您可以考虑使用多模块项目:http://maven.apache.org/guides/mini/guide-multiple-modules.html。 Maven发布插件将更新所有依赖模块的版本。

如果没有,你可能正在做一些你不应该做的事情。 只是将1.0.0-SNAPSHOT更改为1.0.0并不能确保您的应用程序继续工作。所以不要认为Maven应该!

进一步考虑

Maven发布插件会检查您是否使用快照依赖项,因为根据定义,Snapshot是不稳定的版本。它可能会随着时间而变化。这意味着今天的工作可能明天不起作用。

释放意味着您的版本是稳定的,并且可以随时重现构建而无需任何更改。使用Snapshot版本,此断言变为false。

所以,