从Maven生成发布和快照构建的混合体

时间:2014-01-28 17:15:40

标签: maven

我对Maven很新。

我想我正在寻找一个系统:

  • 每次推送到SCM时,我的自动构建工具都会部署快照工件。
  • 有时,手动触发,自动构建也会部署发布工件。

目前,我有第一个,但不是第二个。 POM说:

 <version>0.0.1-SNAPSHOT</version>

......所以Maven构建并部署快照。

我到目前为止最好的建议是编辑POM以“RELEASE”替换“SNAPSHOT”,提交/推送,等待构建,然后将其更改回来,提交/推送。不用说,我就是这样。

实现这一目标的正确方法是什么?两个POM文件? (我也不喜欢这个,因为它们会有很多重复)某些命令行选项会覆盖version

如果重要,我们的构建系统是TeamCity,部署到Artifactory。我希望能得到更一般的答案。

1 个答案:

答案 0 :(得分:1)

由于你是Maven的新手,你有没看过maven-release-plugin

mvn release:prepare release:perform

它会上升您的版本,按以下顺序保存到SCM:

0.0.1-SNAPSHOT
0.0.1
0.0.2-SNAPSHOT

并在0.0.1版本上运行mvn deploy以将其推送到Artifactory。

请注意,在某些情况下,此插件非常脆弱/缓慢/错误/加重/等

  • 大量小型图书馆
  • 库之间的多层依赖关系
  • 在不同的时间表(即不同的版本号)上发布的库

这些条件在大型企业环境中最常见。请注意,在这种情况下,您仍然可以使用发布插件。问题是你必须每个库调用一次插件。这提出了一个单独的问题,即如何协调制作那么多的电话,按照正确的顺序调用它们,管理版本号等等。即使是Maven的创建者Jason van Zyl也承认这种情况是插件的弱点。

另一方面,如果符合以下任何条件,单次调用maven-release-plugin将非常适合您:

  • 您单独工作或在一个小团队中工作
  • 您不会将系统分成小型库
  • 你把它分成小型库,但它们都是同时发布的

希望有所帮助。

相关问题