【问题标题】:Maven release plugin - SNAPSHOT project neededMaven 发布插件 - 需要 SNAPSHOT 项目
【发布时间】:2012-11-10 21:56:14
【问题描述】:

我正在使用 Jenkins 中的 M2 发布插件,它在内部调用 ma​​ven-release-plugin 2.3.2,并且在构建时会抛出此错误:@ 987654322@。问题是,我的项目 poms do 的版本为 1.0.0-SNAPSHOT。我错过了什么?

com.abc.defcompany parent POM ,而我只是为 mvn releaseutils 做的事情

<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 不是快照。会不会是这个原因?

【问题讨论】:

  • 这是单个模块还是多模块构建的父级,因为它的包装是 pom ?
  • 它有 2 个平行的孩子.. 两个罐子,两个 SNAPSHOT
  • 调用 maven-release-plugin 的“M2 发布插件”是什么意思?你的命令行到底是什么?
  • sorry.. shd hv 提到.. 我实际上使用的是 Jenkins,它有一个名为 M2 发布插件 (wiki.jenkins-ci.org/display/JENKINS/M2+Release+Plugin) 的 lugin,它只利用 UI 中的 maven-release-plugin,我可以' t 目前直接从 mvn 测试
  • 你能显示父母和他们孩子的文件夹结构吗?

标签: maven jenkins hudson maven-release-plugin


【解决方案1】:

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

 1. SNAPSOT
 2. SNASHOT
 3. SHNAPSOT

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

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

versions:set

【讨论】:

【解决方案2】:

我遇到了同样的问题,但这些解决方案不起作用。 This blog post by 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 工作区,以确保您重新开始。

【讨论】:

  • 你是对的。在我发布问题的时候,我还在学习 maven-Jenkins 绳索,但几天后我自己也发现了同样的问题。应该纠正我的答案,但既然你先发帖,我必须给你。感谢您解决此问题。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    Master pom 也不必是 SNAPSHOT(在我的公司,我们有相同的设置,并且可以正常工作)。据我所知,utils pom 的这一部分还可以,所以也许你还缺少其他东西,比如

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

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

    【讨论】:

    • 事实上我能够达到它抛出错误You don't have a SNAPSHOT project in the reactor projects list的阶段,这意味着我已经通过阅读这个maven.apache.org/scm/plugins/usage.html正确配置了&lt;scm&gt;标签,所以不是这不是问题 。如果我没有在父 POM 中声明 maven 发布插件,我会遇到一个错误,说 Unknown lifecycle phase mvn release 或类似的东西并且没有达到这个阶段
    • 我已经创建了一个与您所拥有的类似的测试项目(没有快照的 master,pom 打包),我已经通过 Jenkins v1.488 和 m2 发布插件 v0.9.1 完成了它。 Master 正在使用发布插件 v2.2.1 和 scm 插件 v1.5。除了一个非常可疑的场景外,我无法重现这个问题。也就是说,我唯一遇到相同错误的时候是当 pom 的版本不以 SNAPSHOT 结尾时,例如1.0.0-SNAPSHOT-后缀。在这里它可能会发生,因为开发人员正在为每个问题(版本中的人为错误)进行分支。你的子模块可以有这个版本吗?
    • 另外,如果你不介意发送你的 pom 的清理版本,我很乐意通过 Jenkins 运行它们,看看会发生什么。或者,如果您愿意,我可以清理我们的并发送给您。
    • hmm.. 让我进一步调查.. 将尝试找到某个坏版本
    • 有趣!通常删除本地 m2 存储库可以解决所有此类问题,并且当工件(在您的情况下是主 pom)版本升级时肯定不会发生(我想您也这样做了)。好吧,很高兴你解决了它:-)
    【解决方案5】:

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

    1. clean-U 都在 mvn 参数列表中。没用
    2. 然后我清理了~/.m2 存储库。没用

    在 Jenkins 中起作用的是

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 2012-06-02
      • 2013-12-01
      • 1970-01-01
      • 2010-09-19
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      相关资源
      最近更新 更多