Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java gpg:签名失败:密钥不可用_Java_Maven_Ubuntu_Jenkins_Gnupg - Fatal编程技术网

Java gpg:签名失败:密钥不可用

Java gpg:签名失败:密钥不可用,java,maven,ubuntu,jenkins,gnupg,Java,Maven,Ubuntu,Jenkins,Gnupg,我在maven上托管了一个工件。我在本地windows计算机上的设置一直运行良好maven,gpg键命名它。到目前为止,我可以执行“mvn干净部署”,并且我的工件得到了非常成功的签名和发布 进入与托管在ubuntu服务器上的jenkins的持续集成。我通过putty在ubuntu上成功安装了gpg。由于我已经在maven上使用我的gpg密钥签署了该工件的版本,我应该继续使用它们,对吗?因此,我使用winscp将gnupg文件夹及其所有内容传输到ubuntu。实际上,当我运行gpg--list k

我在maven上托管了一个工件。我在本地windows计算机上的设置一直运行良好<代码>maven,gpg键命名它。到目前为止,我可以执行
“mvn干净部署”
,并且我的工件得到了非常成功的签名和发布

进入与托管在ubuntu服务器上的jenkins的持续集成。我通过putty在ubuntu上成功安装了gpg。由于我已经在maven上使用我的gpg密钥签署了该工件的版本,我应该继续使用它们,对吗?

因此,我使用winscp将gnupg文件夹及其所有内容传输到ubuntu。实际上,当我运行
gpg--list keys
时,我可以看到我的密钥信息(我只配置了一个密钥)。我在想,这是我在ubuntu上配置成功的标志。

根据对 我认为ubuntu上没有配置密钥。那么为什么
gpg——列出键会起作用呢??

当jenkins试图部署工件时,“
符号
”目标失败,
maven gpg插件
报告如下:

gpg: no default secret key: secret key not available
gpg: signing failed: secret key not available

如果构建失败,我如何解决这个问题?

我找到了解决方案。我唯一缺少的是我特定的
maven
项目的
settings.xml
文件。在构建我的项目时,我必须找出maven从何处查找此文件(usin
mvn-X
)。不知何故,Ubuntu没有创建它,所以我必须为自己创建一个,并输入相关的
gpg
属性。在这之后,一切都很顺利。

构建服务是否在另一个用户下运行?如果是这样,请确保将密钥导入服务用户的GnuPG目录(
sudo-su username
或类似解决方案)。@JensErat,在阅读您的评论后,我清除了Ubuntu上的.GnuPG目录,并重新开始执行以下导入操作。一切都很顺利。然而,我仍然没有看到任何change@JensErat,我很晚才知道构建服务是在另一个用户上运行的。我确实
sudo-suusername
,试图
--列出密钥
,但出现了写入访问错误。因此,我使用root帐户授予该用户访问
.gnupg
目录的权限,导出密钥并将其导入正确的用户帐户。所有这些都对我没有帮助。我不知道Maven是如何完成签约的,也不能真正帮助你解决这个问题。确保了解在哪个用户下如何准确地调用GnuPG,确保将密钥导入到这个用户,并且要注意,如果权限分配得太广,GnuPG会非常挑剔(通常,只有用户自己才能读写,而没有其他权限)。感谢您提供的有用见解,我做了以上所有涉及
用户的工作
。唯一需要的另一个步骤是为maven gpg插件提供一个配置文件来定位默认密钥。