【问题标题】:failed to execute goal org.apache.maven.plugins:maven-gpg-plugin未能执行目标 org.apache.maven.plugins:maven-gpg-plugin
【发布时间】:2024-01-31 00:50:02
【问题描述】:

这个错误快把我逼疯了。有人可以帮帮我吗? 我确实安装了 gpg,它也在 PATH 中。这个错误是什么原因!!!

我在 jenkins 1.5、maven 3.0.3 上在 linux 和 windows 上运行这个作业(都显示相同的错误)

[INFO] [ERROR] Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.5:sign (default) on project sample: Exit code: 2 -> [Help 1]
    [INFO] [ERROR] 
    [INFO] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [INFO] [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [INFO] [ERROR] 
    [INFO] [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [INFO] [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 4:53.571s
    [INFO] Finished at: Fri Aug 14 14:00:36 PDT 2015
    [INFO] Final Memory: 21M/620M
    [INFO] ------------------------------------------------------------------------
    [JENKINS] Archiving /var/lib/jenkins/jobs/sample/workspace/pom.xml to /var/lib/jenkins/jobs/sample/modules/com.sample$sample/builds/2015-08-14_13-55-35/archive/com.sample/sample/1.0.0-SNAPSHOT/sample-1.0.0-SNAPSHOT.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.5:prepare (default-cli) on project sample: Maven execution failed, exit code: '1'
    cause : Maven execution failed, exit code: '1'
    Stack trace : 
    org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.5:prepare (default-cli) on project sample: Maven execution failed, exit code: '1'
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
        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:79)
        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:158)
        at hudson.maven.Maven3Builder.call(Maven3Builder.java:100)
        at hudson.maven.Maven3Builder.call(Maven3Builder.java:66)
        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:745)
    Caused by: org.apache.maven.plugin.MojoExecutionException: Maven execution failed, exit code: '1'
        at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:281)
        at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:232)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
        ... 26 more
    Caused by: org.apache.maven.shared.release.ReleaseExecutionException: Maven execution failed, exit code: '1'
        at org.apache.maven.shared.release.phase.AbstractRunGoalsPhase.execute(AbstractRunGoalsPhase.java:89)
        at org.apache.maven.shared.release.phase.RunPrepareGoalsPhase.execute(RunPrepareGoalsPhase.java:44)
        at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:234)
        at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:169)
        at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:146)
        at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:107)
        at org.apache.maven.plugins.release.PrepareReleaseMojo.prepareRelease(PrepareReleaseMojo.java:277)
        ... 29 more
    Caused by: org.apache.maven.shared.release.exec.MavenExecutorException: Maven execution failed, exit code: '1'
        at org.apache.maven.shared.release.exec.InvokerMavenExecutor.executeGoals(InvokerMavenExecutor.java:394)
        at org.apache.maven.shared.release.exec.AbstractMavenExecutor.executeGoals(AbstractMavenExecutor.java:110)
        at org.apache.maven.shared.release.phase.AbstractRunGoalsPhase.execute(AbstractRunGoalsPhase.java:81)
        ... 35 more
    channel stopped
    Archiving artifacts
    An attempt to send an e-mail to empty list of recipients, ignored.
    Finished: FAILURE

【问题讨论】:

  • 当您从命令行 Jenkins 节点上运行mvn 时会发生这种情况吗?您真的应该添加-e 开关以查看更多日志
  • 我有 -e 开关和 -X。这是它记录的最大信息。如果我在 Jenkins 中进行“立即构建”,它会构建得很好。如果我在 jenkins 中执行“执行 maven 发布”,那就是它失败的时候。我的 maven 发布构建目标和选项是 -Dresume=false release:clean release:prepare release:perform。我什至尝试了 -Dgpg.skip=true 但没有区别
  • 它是否可以从命令行工作,没有 Jenkins 但在同一个节点上?
  • 在没有 Jenkins 的情况下尝试了命令行,我得到了同样的错误
  • 我希望有人可以帮助你,但这超出了我的范围

标签: maven jenkins jenkins-plugins


【解决方案1】:

如果您不需要对工件进行签名,您可以禁用或跳过父 pom 中定义的 gpg 插件的执行

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>maven-gpg-plugin</artifactId>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>

或使用gpg.skip=true 运行构建(请参阅Maven GPG Plugin

如果您需要对工件进行签名,您应该检查父 pom 中 gpg-plugin 的配置或覆盖您的 pom.xml 中的配置。可能父pom中的一些设置和你的系统环境不匹配,但是从错误信息中很难说出来。

【讨论】:

  • 我的 maven 发布构建目标和选项是 -Dresume=false release:clean release:prepare release:perform。我什至尝试了 -Dgpg.skip=true 但没有区别。
  • 谢谢,这对我帮助很大.. 一直在寻找解决这个问题的最快方法是将 true 添加到 XML跨度>
  • 与@user1164061 相同的问题,-Dgpg.skip=true 无效。标志仍然被触发。我不知道如何禁用这个我从另一个项目的父 pom 继承的插件。
【解决方案2】:

在夜间 jenkins 构建中从 Ubuntu 16 升级到 Ubuntu 18.04 LTS 后,我遇到了这个问题。

gpg --version
gpg (GnuPG) 2.2.4

首先我在非 jenkins 环境中检查了同一个项目

mvn install

我收到了消息

gpg: signing failed: Inappropriate ioctl for device

这指向我

https://github.com/keybase/keybase-issues/issues/2798

https://tutorials.technology/solved_errors/21-gpg-signing-failed-Inappropriate-ioctl-for-device.html

export GPG_TTY=$(tty)

是那里推荐的补救措施。我已将此添加到我的 .profile 并重新启动

mvn install 

测试。这次我被要求通过终端输入 OpenPGP 密钥的密码。通过命令行第二次运行成功,无需输入密钥。

然后我停止并重新启动 jenkins 并再次尝试失败的工作。这次成功了。

不幸的是,它在启动 xsession 的 jenkins jobx 中仍然不起作用。 http://maven.apache.org/plugins/maven-gpg-plugin/usage.html 明确指出您可以将 gpg.passphrase 放在我已经有效使用了很长时间的 settings.xml 中。知道我不知道如何恢复这种行为,我只能提供上述解决方法。

另请参阅 Avoid gpg signing prompt when using Maven release plugin

【讨论】:

    【解决方案3】:

    这意味着您需要有一个密钥来签署罐子。跟着this流程到最后一步即可(不需要复制到github)

    这里总结一下:

    1. 打开 Git Bash
    2. gpg --gen-key #使用默认值,密钥大小为 4096
    3. gpg --list-secret-keys --keyid-format LONG
    4. gpg --armor --export %上面的钥匙%

    【讨论】:

      最近更新 更多