首页 文章

Maven发布插件 - 需要SNAPSHOT项目

提问于
浏览
8

我在 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.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不是快照 . 这可能是原因吗?

5 回答

  • 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工作区,以确保您重新开始 .

  • 2

    Master pom 也不需要 SNAPSHOT (在我的公司,我们有相同的设置,它工作正常) . 据我所知, utils pom 的这部分是可以的,所以也许你错过了别的东西,比如说

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

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

  • 3

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

    1. SNAPSOT
     2. SNASHOT
     3. SHNAPSOT
    

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

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

    versions:set
    
  • 4

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

  • 13

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

    • 我在 mvn 参数列表中都有 clean-U . 不工作

    • 然后我清理了 ~/.m2 存储库 . 不工作

    詹金斯说,有用的是什么

    • 转到 Job config 页面

    • 转到 Build ,点击 Advanced

    • 选中复选框 Use private Maven repository

    • 选择 Local to the workspace . Save

    我知道这是Maven因某种原因习惯做的奇怪事情之一 . 和往常一样,错误不足以提供信息/直观 .

相关问题