Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Maven生成发布版本和快照版本的混合_Maven - Fatal编程技术网

从Maven生成发布版本和快照版本的混合

从Maven生成发布版本和快照版本的混合,maven,Maven,我对Maven很陌生 我想我正在寻找一个系统,其中: 每次我推到SCM时,我的自动构建工具都会部署一个快照工件 偶尔,手动触发的自动构建也会部署发布工件 目前,我有第一个,但没有第二个。POM说: <version>0.0.1-SNAPSHOT</version> 0.0.1-SNAPSHOT 。。。因此Maven构建并部署了一个快照 到目前为止,我得到的最好的建议是编辑POM,将“快照”替换为“发布”,提交/推送,等待构建,然后将其更改回来,提交/推送。不用说

我对Maven很陌生

我想我正在寻找一个系统,其中:

  • 每次我推到SCM时,我的自动构建工具都会部署一个快照工件
  • 偶尔,手动触发的自动构建也会部署发布工件
目前,我有第一个,但没有第二个。POM说:

 <version>0.0.1-SNAPSHOT</version>
0.0.1-SNAPSHOT
。。。因此Maven构建并部署了一个快照

到目前为止,我得到的最好的建议是编辑POM,将“快照”替换为“发布”,提交/推送,等待构建,然后将其更改回来,提交/推送。不用说,我不喜欢那样

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


如果有必要,我们的构建系统是TeamCity,部署到Artifactory。不过,我希望得到一个更一般的答案。

既然你对Maven很陌生,你有没有研究过这个问题

它将升级您的版本,并按以下顺序保存到SCM:

0.0.1-SNAPSHOT
0.0.1
0.0.2-SNAPSHOT
并在0.0.1版本上运行
mvndeploy
,将其推出到Artifactory

请注意,在某些情况下,此插件是出了名的脆弱/缓慢/错误/恶化/等:

  • 大量小型图书馆
  • 库之间的多层依赖关系
  • 按单独的时间表发布的库(即不同的版本号)
这些情况在大型企业环境中最为常见。请注意,在这种情况下,您仍然可以使用发布插件。问题是每个库必须调用插件一次。这就提出了一个单独的问题,即如何协调进行这么多调用,以正确的顺序调用,管理版本号,等等。就连Maven的创建者Jason van Zyl也承认这种情况是插件的一个弱点

另一方面,如果以下任何一项适用,maven release插件的一次调用将非常适合您:

  • 您可以单独工作,也可以在一个小团队中工作,他们都在一个产品上工作
  • 您不会将您的系统拆分为小型库
  • 你可以把它分成几个小库,但它们都是同时发布的

希望能有所帮助。

谢谢。“出了名的脆弱/缓慢/拖沓/恶化/等等”向我暗示,这不是这样做的“最佳实践”方式。我想知道这样做是否是错误的,如果是,正确的做法是什么。maven-release-plugin确实是推荐的方法,而且FWIW它对我来说一直是稳定的。看起来还有一个Maven/teamcity/Artifactory集成插件用于发布:Maven发布插件是我最喜欢的用于构建发布的插件。如果你正在构建像jar、war或ear.Slim这样的纯java项目,我完全推荐maven发布插件,我应该澄清一下。maven release插件实际上是在适当的环境下进行发布的最好的现有工具:通常是一个单独的开发人员或小型团队在独立的产品上工作。“错误情况”最常出现在大型公司中,这些公司的复杂系统由许多相互高度依赖的小型库组成,但发布时间表不同,因此每个库都有不同的版本号。就连Maven的创始人Jason van Zyl也承认了这一弱点。如果这不适用于你,那么你都很好。接受并给予赏金,因为共识似乎是这是一种方式。我必须承认,我对发布插件的文档感到非常困惑——我认为它一定使用了很多我需要先学习的术语。
0.0.1-SNAPSHOT
0.0.1
0.0.2-SNAPSHOT