一、问题描述
在使用maven-gpg-plugin打包jar时,默认情况下,每次都会弹出对话框要你输入密码:
这就有点烦,有啥办法可以设置默认方法没?网上找了一圈,通过搜索关键词“passphrase”,找到了一些教程,首先当然是官方的文档:
Apache Maven GPG Plugin – Usage
按照官方的文档里的操作遇到了些问题。。
二、解决方法
这里详细写下操作过程,主要流程还是来自于官方的文档这里在操作过程中进行简单说明,首先在项目里加入如下插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId>
<version>3.0.1</version>
<executions>
<execution>
<id>sign-artifacts</id>
<phase>verify</phase>
<goals>
<goal>sign</goal>
</goals>
<configuration>
<useAgent>true</useAgent>
<keyname>${gpg.keyname}</keyname>
<passphraseServerId>${gpg.keyname}</passphraseServerId>
<gpgArguments>
<arg>--batch</arg>
<arg>--pinentry-mode</arg>
<arg>loopback</arg>
</gpgArguments>
</configuration>
</execution>
</executions>
</plugin>
通过maven加密pgp密码
mvn --encrypt-master-password xxxx
其中xxx就是你的pgp密码,执行命令后,会生成加密后的密码,在maven的home目录下新建settings-security.xml文件,我这是windows,所以目录是:C:\Users\xxx\.m2
内容如下:
<settingsSecurity>
<master>{xxxxxx}</master>
</settingsSecurity>
{xxxx}就是上面执行mvn --encrypt-master-password生成的。然后再执行
mvn --encrypt-password xxxxx
xxx还是你的pgp密码,请记住该密码。然后在maven配置文件settings.xml中加入以下内容
<servers>
<server>
<id>YOUR_KEY_ID</id>
<passphrase>YOUR_KEY_ENCRYPTED_PASSPHRASE</passphrase>
</server>
</servers>
<profiles>
<profile>
<id>my-release</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<gpg.keyname>YOUR_KEY_ID</gpg.keyname>
</properties>
</profile>
</profiles>
其中YOUR_KEY_ID就是pgp的秘钥ID,通过
gpg --list-keys
可查看
其中YOUR_KEY_ENCRYPTED_PASSPHRASE就是mvn --encrypt-password后的密码,相应的填上去就行了。
然后在执行mvn install就不会弹出输入密码的对话框了。