【问题标题】:"You don't have a SNAPSHOT project in the reactor projects list." when using Jenkins Maven release plugin“反应堆项目列表中没有 SNAPSHOT 项目。”使用 Jenkins Maven 发布插件时
【发布时间】:2013-12-01 23:32:31
【问题描述】:

我在最新版本的 Jenkins 和 Maven Release 插件上使用 SVN、Maven 3.0.3。我正在尝试使用 Maven 发布插件(通过 Jenkins)进行试运行,因此正在执行选项……

Executing Maven:  -B -f /scratch/jenkins/workspace/myproject/myproject/pom.xml -DdevelopmentVersion=53.0.0-SNAPSHOT -DreleaseVersion=52.0.0 -Dusername=***** -Dpassword=********* -DskipTests -P prod -Dresume=false -DdryRun=true release:prepare

但是由于下面的错误,试运行正在消亡……

[JENKINS] Archiving /scratch/jenkins/workspace/myproject/myproject/pom.xml to /home/evotext/hudson_home/jobs/myproject/modules/org.mainco.subco$myproject/builds/2013-11-18_16-09-14/archive/org.mainco.subco/myproject/52.0.0/myproject-52.0.0.pom
Waiting for Jenkins to finish collecting data
mavenExecutionResult exceptions not empty
message : Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.0:prepare (default-cli) on project myproject: You don't have a SNAPSHOT project in the reactor projects list.
cause : You don't have a SNAPSHOT project in the reactor projects list.
    Stack trace : 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal  org.apache.maven.plugins:maven-release-plugin:2.0:prepare (default-cli) on project myproject: You don't have a SNAPSHOT project in the reactor projects list.
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:117)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
    at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:178)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at hudson.maven.Maven3Builder.call(Maven3Builder.java:129)
    at hudson.maven.Maven3Builder.call(Maven3Builder.java:67)
    at hudson.remoting.UserRequest.perform(UserRequest.java:118)
    at hudson.remoting.UserRequest.perform(UserRequest.java:48)
    at hudson.remoting.Request$2.run(Request.java:326)
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
Caused by: org.apache.maven.plugin.MojoFailureException: You don't have a SNAPSHOT project in the reactor projects list.
    at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:219)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:181)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 30 more
Caused by: org.apache.maven.shared.release.ReleaseFailureException: You don't have a SNAPSHOT project in the reactor projects list.
    at org.apache.maven.shared.release.phase.CheckPomPhase.execute(CheckPomPhase.java:111)
    at org.apache.maven.shared.release.phase.CheckPomPhase.simulate(CheckPomPhase.java:123)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:199)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:140)
    at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:103)
    at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:211)
    ... 33 more

我的 SVN 签出方法设置为“始终签出新副本”,并且我的快照存储库中有一个有问题的快照版本,但我的发布存储库中没有。有没有办法让“反应器项目列表”查看我的快照存储库?

编辑:我包含了我的 pom 的 sn-p,项目从中获取了它的版本——它从父级继承它

    <parent>
            <artifactId>subco</artifactId>
            <groupId>org.mainco.subco</groupId>
            <version>52.0.0</version>
    </parent>

【问题讨论】:

标签: maven jenkins release snapshot maven-release-plugin


【解决方案1】:

Jenkins 工作区未清理,或者您在 pom.xml 中有 FINAL 版本。 Jenkins 有清理工作空间的签出策略。

更多:Maven release plugin - SNAPSHOT project needed

退房策略选项:

  • 模拟干净签出,首先删除未版本化的文件/忽略的文件,以及svn:ignore 忽略的文件/目录,然后执行svn update
  • 总是检查新副本
  • 尽可能使用svn update,更新前使用svn revert

【讨论】:

  • “Jenkins 有清理工作空间的选项”是什么意思?这些选项在哪里?你说的是 Jenkins 的工作区清理插件吗?
  • 退房策略选项
  • 对我来说就是这种情况,在清除 jenkins 工作区后它起作用了。
【解决方案2】:

您正在尝试发布不是快照的工件。这意味着您的工件的版本号类似于 3.0.3。该版本号意味着它已经发布。你不能发布一个版本。两者之间不会有任何变化,因此没有意义。

您应该只发布 SNAPSHOT 版本。这意味着您的版本号类似于 3.0.3-SNAPSHOT。

【讨论】:

  • 我添加了获取版本的方式——我从父 pom.xml 继承了它。遗憾的是,如果我将版本更改为包含“-SNAPSHOT”,我会收到错误消息,“无法在项目 myproject 上执行目标 org.apache.maven.plugins:maven-release-plugin:2.0:prepare (default-cli): Can '由于未发布的依赖项而无法发布项目"
  • @Dave 我想你也得给父母做一个快照。
  • 我可能需要对此提出第二个 SO 问题,但父 pom 确实有一个 SNAPSHOT 版本,尽管它是“53.0.0-SNAPSHOT”(而不是我试图继承的来自,52.0.0-SNAPSHOT)。您是指更改父 pom 中的版本吗?
  • 我认为错误消息不是自我解释的,除非您知道“反应堆项目列表”的含义。感谢您非常明确的回答。
  • 如果他们只是添加一条消息,例如“您无法发布版本。”,那将更容易理解。他们提出的消息是“您在反应堆项目列表中没有 SNAPSHOT 项目”。 ... 谁会以应有的方式解释此消息?
【解决方案3】:

将签出策略更改为“通过首先删除未版本控制的文件/忽略的文件,然后 svn 更新来模拟干净签出”对我有用。

【讨论】:

    【解决方案4】:

    将您的项目 POM 文件从以前构建的代码库升级到新版本。

    1.0.1-SNAPSHOT&lt;version&gt;1.0.1-SNAPSHOT&lt;/version&gt;

    【讨论】:

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