提取mvn clean包时出错

时间:2018-05-04 08:33:42

标签: java maven

所以我在Ubuntu 17.10上遇到了Maven的一个大问题。在我的pom.xml中,我使用了maven-assembly-plugin。
每次我在项目的根目录中使用mvn clean package运行Maven时执行失败,在堆栈跟踪中我可以找到错误消息

Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.5: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

我已经在我的Ubuntu上重新安装了Maven,并在Google上搜索了好几个小时。似乎Maven / Java无法通过SSL连接到Maven Central。我找到了一种使用Maven的方法,并忽略了mvn clean package -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true -Dmaven.wagon.http.ssl.ignore.validity.dates=true的SSL,但这也没有用。

我的所有Maven项目都出现错误,所以我认为问题不在pom.xml中。

带有stacktrace的调试日志位于Pastebin

我希望有人能帮助我,祝你们好日子!

编辑: 我检查了我的cacerts并找到了用于验证Maven Central证书的digicert的.pem

Posted an Screenshot here!

2 个答案:

答案 0 :(得分:1)

我在运行maven clean时遇到了同样的问题,后来才发现是我的组织防火墙导致从AbstractHTTPClient抛出ACCESS_DENIED。如果您在公司防火墙后面运行,可以使用防火墙设置更新settings.xml。

检查您是否在公司代理服务器后面运行。如果是,那么您可能需要在settings.xml中添加组织的代理设置。

<settings>
  <proxies>
   <proxy>
      <id>SOME ID</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>PROXY_HOST</host>
      <port>PROXY_PORT</port>
    </proxy>
  </proxies>
</settings>

答案 1 :(得分:0)

这通常可以开箱即用。您的JDK cacerts文件(JDK_HOME \ jre \ lib \ security \ cacerts)已损坏或有人拦截您的网络流量并替换Maven Central使用的TLS证书(在公司环境中常见)。

使用JDK附带的keytool检查cacerts文件,并确认Maven Central使用的证书链是可信的。您可以在Web浏览器中打开Maven Central并检查实际的TLS证书。如果您信任它,请将其添加到您的JDK cacerts。