所以我在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
答案 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。