我在 Jenkins 内使用M2发布插件,在内部调用 maven-release-plugin 2.3.2 ,同时构建抛出此错误: You don't have a SNAPSHOT project in the reactor projects list . 问题是,我的项目poms do 的版本为1.0.0-SNAPSHOT . 我错过了什么?
com.abc.def
是 company parent POM
,我正在为 mvn release
做 utils
<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>
是的,我已经完成了我的基本Google SO拖网,并指出我的POM应该有SNAPSHOT作为版本,已经存在 . 除了我公司的父母POM不是快照 . 这可能是原因吗?
5 回答
我有同样的问题,但这些解决方案不起作用 . This blog post by Tomek Kaczanowski击中了头上的钉子 .
原因通常是Jenkins SVN策略设置为“尽可能使用svn update”,这不会清除构建之间的构建工作区 .
当您尝试删除版本时,Jenkins将更新您的pom并创建一些临时文件 . 如果发布失败,则不会清除这些pom更新和临时文件 . 那么,当您修复pom并尝试重建时,由于这些时髦的工作区工件让Jenkins感到困惑,您会收到
You don't have a SNAPSHOT project in the reactor projects list
错误 .解决方案是更改您的Jenkins SVN策略 . 以下任何一项都应该有效:
总是看一份新的副本
首先删除未版本化/忽略的文件,然后'svn update'模拟清理结帐
尽可能使用svn update,更新前使用'svn revert'
我还建议您清理Jenkins工作区,以确保您重新开始 .
Master
pom
也不需要SNAPSHOT
(在我的公司,我们有相同的设置,它工作正常) . 据我所知,utils pom
的这部分是可以的,所以也许你错过了别的东西,比如说当然
POM
中的构建定义中的maven release plugin
部分? (我知道的远射)我有时会发现拼写问题:“SNAPSHOT”,这基本上也会导致同样的错误 . 喜欢:
;-)所以有必要提前检查一下 .
很酷的修复是在父pom上使用:
实际上,Jenkis的工作区包含一些模块的旧的非SNAPSHOT版本 . 尝试破坏工作区(=清理并清除它),然后再次发布,他将获得带有后缀-SNAPSHOT的修正版本
我找到了原因:最新的公司家长POM没有被接收
我在
mvn
参数列表中都有clean
和-U
. 不工作然后我清理了
~/.m2
存储库 . 不工作詹金斯说,有用的是什么
转到
Job config
页面转到
Build
,点击Advanced
选中复选框
Use private Maven repository
选择
Local to the workspace
.Save
我知道这是Maven因某种原因习惯做的奇怪事情之一 . 和往常一样,错误不足以提供信息/直观 .