首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让maven-gpg-plugin使用来自环境变量或命令行属性的密码呢?

如何让maven-gpg-plugin使用来自环境变量或命令行属性的密码呢?
EN

Stack Overflow用户
提问于 2015-03-04 16:39:44
回答 2查看 2.5K关注 0票数 12

我看到了:Avoid gpg signing prompt when using Maven release plugin,但是它适用于一个非常老的版本的maven,而且我使用的是3.2.2,所以同样的解决方案不适用。

基本上,无论命令行上的属性、pom.xml中的属性或环境变量的组合如何,我都无法获得maven gpg插件以避免出现代理对话框。

出于安全考虑,我们决定在settings.xml中不包含纯文本中的密码,因为这是一个糟糕的想法。使用加密的maven,只需将主密钥移动到不同的纯文本文件。

软件版本:

代码语言:javascript
复制
$ 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)

我试过了

代码语言:javascript
复制
mvn -Dgpg.passphrase='lolpassphrase'

使用pom.xml中的属性从环境中获取它:

代码语言:javascript
复制
        <properties>
            <gpg.keyname>E7C89BBB</gpg.keyname>
            <gpg.passphrase>${env.GPG_PASSPHRASE}</gpg.passphrase>
        </properties>

然后:

代码语言:javascript
复制
GPG_PASSPHRASE='lolpassphrase' mvn install 

编辑:很明显,如果我在pom.xml属性中设置了实际的密码,那么我的gpg代理就会阻止我,并对我撒谎:(

代码语言:javascript
复制
        <properties>
            <gpg.keyname>E7C89BBB</gpg.keyname>
            <gpg.passphrase><![CDATA[lolcomplicatedpassphrase]]></gpg.passphrase>
        </properties>

必须有一个方法来做到这一点,而不把密码在某个地方的纯文本,但我无法使用正确的谷歌找到这个答案,希望你们可以帮助我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-04 17:06:24

编辑:此解决方案仅适用于gnupg 2.1.x。2.0.x不识别不幸的是,在mavens中,除了第二个概要之外,我所知道的没有办法让它按照gnupg的哪个版本做正确的事情。它可能需要对插件进行更新,以“正确”的方式完成它。

天哪,我刚刚解决了这个问题,您必须为gpg指定一对参数,以将它的定位模式更改为“回环”,一旦您这样做了,它将遵守gpg.passphrase值,无论是从环境变量还是从用户属性。哇,真是晦涩难懂。

代码语言:javascript
复制
                <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>
票数 16
EN

Stack Overflow用户

发布于 2021-01-01 20:01:23

您可以使用插件https://www.simplify4u.org/sign-maven-plugin/,它不使用gpg进行签名,因此您不需要复杂的配置来提供作为环境变量的密码。

sign-maven-plugin只支持将所有配置项作为环境变量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28859942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档