我已经安装了Nexus证书。当我启动Jenkins Builder时,我得到一个错误:
[ERROR] Failed to execute goal on project wf-base: Could not resolve dependencies for project 1.0.0o-SNAPSHOT: Failed to collect dependencies at 1.0.0o-SNAPSHOT:
Failed to read artifact descriptor for 1.0.0o-SNAPSHOT: Could not transfer artifact 1.0.0o-SNAPSHOT from/to Nexus (https://nexus.repository.link):
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -> [Help 1]
字符串
3条答案
按热度按时间bq3bfh9z1#
这里有一些选择,为那些你(像我)谁在这个问题上绊倒。
1.导入java信任存储中的CA
第一个选项是使用
keytool
在jre
cacert
文件中导入 certificate authority(ies)。这个选项,虽然看起来是最自然的,但有一个缺点:这意味着对JRE / JDK文件夹具有写访问权限,但情况并非总是如此。
2.使用Jenkins将trust store作为参数传递给Maven中的JVM
这里是诀窍:
maven
在运行之前向jvm
传递一组参数。这些参数被 Package 在一个名为MAVEN_OPTS
的变量中,该变量在mvn
脚本中初始化。使用Jenkins的方法是在你的slave或job中创建一个环境变量,称之为
MAVEN_OPTS
,并给予它一个JVM
选项:字符串
像往常一样,还有很多其他的可能性,但这两个是最干净的。
qyzbxkaa2#
看起来你在链中缺少一个证书,所以你的证书不受信任,如果它是一个自签名证书,你需要将它添加为根证书。如果证书是由CA颁发的,则需要下载链中缺少的证书并安装它们。
b0zn9rqh3#
我还没有评论权,所以只能回复:
使用avi.elkharrat的答案,一旦您将ca导入到javacacert文件中,您可能还需要重新启动Jenkins以获取新的证书。在我的例子中,如果我以jenkins用户的身份在本地运行maven,我可以成功地从nexus repo中提取,但是如果我从Jenkins运行构建,它仍然不信任Nexus证书。重新启动Jenkins解决了这个问题。