【问题标题】:Giving custom settings.xml to Maven Release Plugin将自定义 settings.xml 提供给 Maven 发布插件
【发布时间】:2015-03-29 12:07:51
【问题描述】:

我正在尝试使用通常的 Maven Release Plugin 从 Travis 发布版本。为了为我的 GPG 密钥(和一些其他参数)提供密码短语,我有一个带有我的 settings.xml 的 travis 分支,我将其作为构建的一部分检出。然后我运行 Maven 并为其提供自定义设置 (--settings) 并确保在发布期间也使用 -Darguments 进行传播:

mvn release:prepare --settings ${MVN_SETTINGS} -B -V \
    -PwithMutationTests,gpg,rpm,deb \
    -Darguments="--settings ${MVN_SETTINGS}"
mvn release:perform --settings ${MVN_SETTINGS} -B -V \
    -PwithMutationTests,gpg,rpm,deb \
    -Darguments="--settings ${MVN_SETTINGS}"

日志表明我的设置被传递:

[INFO] Executing: /bin/sh -c cd /home/travis/build/jmxtrans/jmxtrans \
    && /usr/local/maven/bin/mvn \
        -s /tmp/release-settings1372267334822299631.xml \
        clean verify --no-plugin-updates --batch-mode \
        --settings /home/travis/build/jmxtrans/jmxtrans/target/travis/settings.xml \
        -Psonatype-oss-release -P withMutationTests,gpg,rpm,deb

Maven 发布插件似乎还添加了-s /tmp/release-settings1372267334822299631.xml,它可能优先于我的 settings.xml(我找不到这方面的文档)。

最后,我的构建失败了,因为它找不到我的 GPG 密钥:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-gpg-plugin:1.1:sign (sign-artifacts) on project jmxtrans: Cannot obtain passphrase in batch mode -> [Help 1]

我相当肯定 settings.xml 没有问题并且包含所有必要的信息:我对 SNAPSHOT 构建使用相同的 settings.xml,并且它们是正确的 GPG 签名的。

如何确保在发布期间使用我的设置?

编辑:

我的settings.xml的相关部分:

<profile>
  <id>gpg</id>
  <activation>
    <activeByDefault>true</activeByDefault>
  </activation>
  <properties>
    <gpg.homedir>./target/travis/</gpg.homedir>
  </properties>
</profile>

问题可能实际上来自gpg.homedir 属性是相对路径而不是绝对路径。仍在检查,如果是这种情况,将添加答案。

其他资源:

【问题讨论】:

  • 天哪,请修复您的日志记录(好问题很难)
  • 是的,修复日志记录是下一个优先事项(抱歉)
  • 从您的 shell 脚本中,您可以 grep tmp 文件名,然后合并您的 settings.xml 并运行 mvn release:prepare -Dresume(非常痛苦)
  • 我宁愿不要做这种极端的事情......感觉就像我做错了什么,应该有一种方法可以在 Maven 版本中使用自定义 settings.xml插件...
  • afaik 作为替代方案,您可以设置不同的 m2_home,这就是要复制设置的位置(至少,在 jenkins 中);你可以在运行之前把你的自定义设置放在那里,但我认为这不那么痛苦

标签: maven settings release travis-ci


【解决方案1】:

似乎我的问题与 GPG 主目录不是绝对路径有关。将我的settings.xml 更改为:

<profile>
  <id>gpg</id>
  <activation>
    <activeByDefault>true</activeByDefault>
  </activation>
  <properties>
    <gpg.homedir>/home/travis/build/jmxtrans/jmxtrans/target/travis/</gpg.homedir>
  </properties>
</profile>

另一个问题是默认准备目标包括clean,它正在删除我的 GPG 密钥的结帐。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2016-09-28
    相关资源
    最近更新 更多