Maven发布插件-需要快照项目
我从Jenkins内部使用M2发布插件,该插件在内部调用maven发布插件2.3.2,构建时抛出此错误:Maven发布插件-需要快照项目,maven,jenkins,hudson,maven-release-plugin,Maven,Jenkins,Hudson,Maven Release Plugin,我从Jenkins内部使用M2发布插件,该插件在内部调用maven发布插件2.3.2,构建时抛出此错误:反应堆项目列表中没有快照项目。问题是,我的项目POM的版本为1.0.0-SNAPSHOT。我错过了什么 com.abc.def是公司的母公司POM,我正在为utils的mvn发行版 <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.abc</group
反应堆项目列表中没有快照项目
。问题是,我的项目POM的版本为1.0.0-SNAPSHOT。我错过了什么
com.abc.def
是公司的母公司POM
,我正在为utils的mvn发行版
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.abc</groupId>
<artifactId>def</artifactId>
<version>1.0.0</version>
</parent>
<groupId>com.abc.def</groupId>
<artifactId>utils</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>utils</name>
4.0.0
com.abc
def
1.0.0
com.abc.def
乌提尔斯
1.0.0-SNAPSHOT
聚甲醛
乌提尔斯
是的,我已经完成了基本的Google+SO拖网,它指出我的POM应该有快照作为版本,这个版本已经存在了。除了我的公司母公司POM不是快照。这可能是原因吗?Masterpom
也不需要是SNAPSHOT
(在我的公司,我们有相同的设置,工作正常)。就我所知,utils-pom
的这一部分还可以,所以可能您遗漏了其他内容,比如
<scm>
<developerConnection>scm:${release-scm}</developerConnection>
</scm>
scm:${release scm}
当然还有POM
中构建定义中的maven发布插件
部分?
(我知道这是一个很难预测的问题)我找到了原因:最近的公司母公司POM没有被接收
我在mvn
参数列表中有clean
和-U
。不起作用
然后我清理了~/.m2
存储库。不起作用
有效的是,在詹金斯
转到作业配置
页面
转到Build
,单击Advanced
选中框使用私有Maven存储库
选择工作区的本地
<代码>保存
我知道这是Maven出于某种原因习惯做的奇怪事情之一。和往常一样,这些错误信息不够丰富/直观 实际上,Jenkis的工作区包含一些模块的旧的非快照版本。尝试清除工作区(=清理并清除工作区),然后再次发布,他将获得后缀为-SNAPSHOT的更正版本。我遇到了相同的问题,但这些解决方案不起作用。一针见血 原因通常是Jenkins SVN策略设置为“尽可能多地使用SVN更新”,这不会清理构建之间的构建工作区 当您尝试剪切发行版时,Jenkins将更新您的pom并创建一些临时文件。如果发布失败,则不会清理这些pom更新和临时文件。因此,当您修复pom并尝试重建时,会出现
错误,因为这些令人困惑的工作区工件导致反应堆项目列表中没有快照项目
解决方案是改变Jenkins SVN策略。以下任何一项都应起作用:
- 一定要换一份新的
- 通过首先删除未版本化/忽略的文件,然后“svn更新”,模拟干净签出
- 尽可能使用svn更新,更新前使用“svn还原”
我还建议您清理Jenkins的工作区,以确保重新开始。我有时会发现“快照”一词的拼写问题,这基本上也会导致相同的错误。比如:
1. SNAPSOT
2. SNASHOT
3. SHNAPSOT
;-)因此,值得提前检查一下
用于固定的冷却液将用于母pom:
versions:set
这是单个模块还是多模块构建的父模块,因为它的打包是pom?它有两个并行子模块。。两个JAR,两个Snapshot你所说的“M2发布插件”是什么意思?你的命令是什么?对不起。。提及shd hv。。我实际上使用的是Jenkins,它有一个名为M2 release plugin()的lugin它只是利用了UI中的maven release插件,我目前无法直接从MVNCA进行测试。你可以显示父级及其子级的文件夹结构吗?事实上,我能够达到抛出错误的阶段,你在反应堆项目列表中没有快照项目,这意味着我已经通过阅读此内容正确配置了
标记,因此这不是问题所在。如果我没有在父POM中声明maven release插件,我会遇到一个错误,说未知生命周期阶段mvn release
或类似的东西,但没有达到这个阶段。我已经创建了一个与您所拥有的类似的测试项目(没有快照的master,POM打包)我已经通过Jenkins v1.488和m2发布插件v0.9.1进行了测试。Master使用的是版本插件v2.2.1和scm插件v1.5。除了一个非常可疑的场景外,我还无法重现这个问题。也就是说,我唯一得到相同错误的时候是pom的版本没有以快照结尾,例如1.0.0-SNAPSHOT-suffix。这里可能会发生这种情况,因为开发人员正在针对每个问题进行分支(版本中的人为错误)。您的子模块是否有这个版本?另外,如果您不介意发送pom的清理版本,我很乐意通过Jenkins运行它们,看看会发生什么。或者,我可以把我们的清理干净,如果你愿意的话,我可以寄给你。。让我进一步调查。。将尝试找到一个有趣的坏版本!通常情况下,删除本地m2回购解决了所有此类问题,并且当工件(在您的情况下是主pom)版本升级时(我想您也这样做了),肯定不会发生这种情况。好吧,很高兴你解决了它:-)你是对的。在我发布这个问题的时候,我还在学习maven Jenkins的诀窍,但几天后我自己发现了同样的诀窍。我应该更正我的答案,但既然你先发了,我就给你。感谢您修复此问题。+1我一整天都无法键入快照。哦,我做到了。版本:set在那里解释: