2012-07-13 229 views
8

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

它不断要我解决快照依赖关系。 有没有办法在批处理模式下做到这一点,以便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 
+0

您是否尝试过使用mvn的--batch模式? – khmarbaise 2012-07-13 17:44:58

+0

也无济于事。 – khmarbaise 2012-07-13 17:52:58

回答

5

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

+0

我正面对相同的插件(versions-maven-plugin 2.2)。但是,由于某种原因,它不工作。我只是使用 - 版本:使用版本和我的项目的初始版本是1.0.0-SNAPSHOT。任何解决方案?谢谢!! – 2015-11-04 13:26:48

3

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

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

进一步考虑如果您正在使用快照的依赖,因为快照,顾名思义,是不稳定的vesions

的Maven插件发布检查。它可能会随着时间而改变。这意味着今天的工作明天可能无法工作。

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

所以,

8

注意,您可以配置Maven忽略快照依赖使用allowTimestampedSnapshots检查,根据行家释放小插件文档:

allowTimestampedSnapshots:

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

  • 类型:布尔
  • 因为:2.0-β-7
  • 要求:无
  • 表达式:$ {ignoreSnapshots}
  • 默认值:false

或者干脆运行以下命令:

MVN发布:准备-DignoreSnapshots =真

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

换句话说,依赖关系解析不是在发布阶段应该完成的任务,而且,如果没有开发人员的关注,这不是一个应该自动完成的任务。

+0

完全同意你的看法 – 2012-07-14 21:06:52