我看到了:Avoid gpg signing prompt when using Maven release plugin,但是它适用于一个非常老的版本的maven,而且我使用的是3.2.2,所以同样的解决方案不适用。
基本上,无论命令行上的属性、pom.xml中的属性或环境变量的组合如何,我都无法获得maven gpg插件以避免出现代理对话框。
出于安全考虑,我们决定在settings.xml中不包含纯文本中的密码,因为这是一个糟糕的想法。使用加密的maven,只需将主密钥移动到不同的纯文本文件。
软件版本:
$ gpg --version
gpg (GnuPG) 2.1.2
libgcrypt 1.6.2
$ mvn --version
Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T08:51:42-05:00)我试过了
mvn -Dgpg.passphrase='lolpassphrase'使用pom.xml中的属性从环境中获取它:
<properties>
<gpg.keyname>E7C89BBB</gpg.keyname>
<gpg.passphrase>${env.GPG_PASSPHRASE}</gpg.passphrase>
</properties>然后:
GPG_PASSPHRASE='lolpassphrase' mvn install 编辑:很明显,如果我在pom.xml属性中设置了实际的密码,那么我的gpg代理就会阻止我,并对我撒谎:(
<properties>
<gpg.keyname>E7C89BBB</gpg.keyname>
<gpg.passphrase><![CDATA[lolcomplicatedpassphrase]]></gpg.passphrase>
</properties>必须有一个方法来做到这一点,而不把密码在某个地方的纯文本,但我无法使用正确的谷歌找到这个答案,希望你们可以帮助我。
发布于 2015-03-04 17:06:24
编辑:此解决方案仅适用于gnupg 2.1.x。2.0.x不识别不幸的是,在mavens中,除了第二个概要之外,我所知道的没有办法让它按照gnupg的哪个版本做正确的事情。它可能需要对插件进行更新,以“正确”的方式完成它。
天哪,我刚刚解决了这个问题,您必须为gpg指定一对参数,以将它的定位模式更改为“回环”,一旦您这样做了,它将遵守gpg.passphrase值,无论是从环境变量还是从用户属性。哇,真是晦涩难懂。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<!-- This is necessary for gpg to not try to use the pinentry programs -->
<gpgArguments>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>发布于 2021-01-01 20:01:23
您可以使用插件https://www.simplify4u.org/sign-maven-plugin/,它不使用gpg进行签名,因此您不需要复杂的配置来提供作为环境变量的密码。
sign-maven-plugin只支持将所有配置项作为环境变量。
https://stackoverflow.com/questions/28859942
复制相似问题