将自定义settings.xml提供给Maven Release Plugin

时间:2015-03-29 12:07:52

标签: maven settings release travis-ci

我正在尝试使用通常的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 Release Plugin似乎还添加了-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属性是相对路径而不是绝对路径。仍在检查,如果是这样的话,将添加答案。

其他资源:

1 个答案:

答案 0 :(得分:0)

似乎我的问题与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密钥的结帐。