Maven 安全 HTTPS 存储库和 JDK5

Maven secure HTTPS repository and JDK5

自 2020 年 1 月起,maven 已将其存储库从 HTTP 切换到 HTTPS。 为了让我的项目(运行 Java 5 + maven 3.1.1)下载我在 pom.xml 中更改的回购协议,要查看的回购协议:https://repo.maven.apache.org/maven2 这工作正常,现在 Maven 尝试从安全存储库访问依赖项。 尝试 build/clean 我的项目时遇到以下问题:

第 1 期 尝试在没有任何进一步参数的情况下 mvn clean 我的项目,我收到以下错误: 无法传输工件 org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): peer not authenticated -> [Help 1]

我试图通过添加以下参数来绕过错误: mvn -Dmaven.wagon.http.ssl.insecure=true -Dmaven.wagon.http.ssl.allowall=true clean

新错误: 无法传输工件 org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): 握手期间远程主机关闭连接:SSL peer 错误关闭-> [帮助 1]

进一步尝试添加以下参数:-Dhttps.protocols=TLSv1.2,TLSv1.1 解决新错误:

无法传输工件 org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): TLSv1.2 -> [Help 1]

第 2 期 我尝试使用 https://repo.maven.apache.org/maven2/ 提供的证书来采用不同的方法 我将证书导入信任库并尝试将其与以下 Maven 命令一起使用:

mvn -Djavax.net.ssl.trustStore=C:\PortableApps\trust.jks -Djavax.net.ssl.trustStore密码=pass -Djavax.net.ssl.keyStore=C:\PortableApps\trust .jks -Djavax.net.ssl.keyStoreType=jks -Djavax.net.ssl.keyStorePassword=pass clean

错误又和之前一样 无法传输工件 org.apache.maven.plugins:maven-clean-plugin:pom:2.5 from/to central (https://repo.maven.apache.org/maven2): peer not authenticated -> [Help 1]

我开始相信,由于 JVM 的限制,这不适用于 Java5。作为最后的解决方案,我发现了不安全回购 http://insecure.repo1.maven.org/maven2/ 的用法,但我想把它作为我最后的选择。还有什么建议吗?

我最终使用了不安全的 maven 存储库 http://insecure.repo1.maven.org/maven2/ 以使其与 Java 5 (build/run) 一起工作。

或者,正如评论中已经建议的那样,您可以在构建过程中使用 JDK 7,以便从安全的 Maven 存储库下载依赖项,并在 [=23] 中使用 Java 5 =] 你的应用程序。

看起来,由于缺少 Maven 似乎使用的 TLSv1.2 支持,在使用 Java 5 时无法访问安全的 Maven 存储库 (https://central.sonatype.org/articles/2018/May/04/discontinued-support-for-tlsv11-and-below/?__hstc=31049440.13cc707ef0d169390d4d7ac8ba12c78e.1571910247825.1579506965027.1580304556973.4&__hssc=31049440.1.1580304556973&__hsfp=1122763312)