12

我正在使用Jenkins中的 M2 发布插件,它在内部调用maven-release-plugin 2.3.2,并且在构建时会抛出此错误:You don't have a SNAPSHOT project in the reactor projects list。问题是,我的项目 poms的版本确实为 1.0.0-SNAPSHOT。我错过了什么?

com.abc.defcompany 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 不是快照。这可能是原因吗?

4

5 回答 5

14

我有同样的问题,但这些解决方案没有奏效。Tomek Kaczanowski 的这篇博文一针见血。

原因通常是 Jenkins SVN 策略设置为“尽可能使用 svn update”,这不会清理构建之间的构建工作区。

当你尝试删减版本时,Jenkins 会更新你的 pom 并创建一些临时文件。如果发布失败,这些 pom 更新和临时文件不会被清理。因此,当您修复 pom 并尝试重建时,You don't have a SNAPSHOT project in the reactor projects list由于这些时髦的工作区工件使 Jenkins 感到困惑,您会收到错误消息。

解决方案是更改您的 Jenkins SVN 策略。以下任何一项都应该有效:

  • 总是检查一个新的副本
  • 通过首先删除未版本控制/忽略的文件,然后“svn update”来模拟干净的结帐
  • 尽可能使用 svn update,在更新前使用 'svn revert'

我还建议您清除 Jenkins 工作区,以确保您重新开始。

于 2013-06-21T15:15:36.020 回答
5

大师pom不需要SNAPSHOT那么好(在我的公司,我们有相同的设置,它工作正常)。据我所知,这部分没问题utils pom,所以也许你错过了其他东西,比如

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

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

于 2012-11-22T15:14:40.660 回答
4

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

 1. SNAPSOT
 2. SNASHOT
 3. SHNAPSOT

;-) 所以值得提前检查一下。

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

versions:set
于 2013-06-25T19:39:11.920 回答
3

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

于 2013-05-24T18:27:21.000 回答
2

我找到了原因:最新的公司Parent POM没有被捡到

  1. 我在参数列表中clean都有。不工作-Umvn
  2. 然后我清理了~/.m2存储库。不工作

有效的是,在詹金斯

  1. 转到Job config页面
  2. 前往Build,点击Advanced
  3. 选中该框Use private Maven repository
  4. 选择Local to the workspaceSave

我知道这是 Maven 出于某种原因习惯做的那些奇怪的事情之一。和往常一样,错误信息不够丰富/直观。

于 2012-11-27T11:08:22.170 回答