Maven发布插件 - 需要SNAPSHOT项目

时间:2012-11-22 13:28:51

标签: maven jenkins hudson maven-release-plugin

我正在使用 Jenkins 中的M2发布插件,该插件在内部调用 maven-release-plugin 2.3.2 ,同时构建抛出此错误: { {1}} 即可。问题是,我的项目poms 的版本为1.0.0-SNAPSHOT。我错过了什么?

You don't have a SNAPSHOT project in the reactor projects listcom.abc.def,而我只针对company parent POM的{​​{1}}

mvn release

是的,我已经完成了我的基本Google + SO拖网,并指出我的POM应该有SNAPSHOT作为版本,已经存在。除了我公司的父母POM不是快照。这可能是原因吗?

5 个答案:

答案 0 :(得分:14)

我遇到了同样的问题,但这些解决方案无效。 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工作区,以确保你重新开始。

答案 1 :(得分:5)

主人pom也不需要SNAPSHOT(在我的公司,我们有相同的设置,并且工作正常)。据我所知,这部分utils pom是可以的,所以也许你错过了其他的东西,比如

<scm>
    <developerConnection>scm:${release-scm}</developerConnection>
</scm>

当然还有maven release plugin中构建定义中的POM部分? (我知道的远射)

答案 2 :(得分:4)

我有时会发现拼写问题:“SNAPSHOT”,这基本上也会导致同样的错误。像:

 1. SNAPSOT
 2. SNASHOT
 3. SHNAPSOT

;-)所以有必要提前检查一下。

酷的修复是在父pom上使用:

versions:set

答案 3 :(得分:3)

实际上,Jenkis的工作区包含一些模块的旧的非SNAPSHOT版本。尝试破坏工作区(=清理并清除它),然后再次发布,他将获得带有后缀-SNAPSHOT的修正版本

答案 4 :(得分:2)

我找到了原因:最新的公司家长POM没有被接收

  1. 我在clean参数列表中都有-Umvn。没用?
  2. 然后我清理了~/.m2存储库。没用?
  3. 在Jenkins中有用的是什么

    1. 转到Job config页面
    2. 转到Build,点击Advanced
    3. 选中Use private Maven repository
    4. 选择Local to the workspaceSave
    5. 我知道这是Maven因某种原因习惯做的奇怪事情之一。和往常一样,错误不足以提供信息/直观。