我正在尝试使用通常的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
属性是相对路径而不是绝对路径。仍在检查,如果是这样的话,将添加答案。
其他资源:
答案 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密钥的结帐。