最近,在Jenkins中运行的Maven构建作业失败,出现以下异常,表示它们无法从Maven Central提取依赖项,应该使用HTTPS。我不知道如何将请求从HTTP更改为HTTPS。有人能指导我一下这件事吗?

[ERROR] Unresolveable build extension: Plugin org.apache.maven.wagon:wagon-ssh:2.1 or one of its dependencies could not be resolved: Failed to collect dependencies for org.apache.maven.wagon:wagon-ssh:jar:2.1 (): Failed to read artifact descriptor for org.apache.maven.wagon:wagon-ssh:jar:2.1: Could not transfer artifact org.apache.maven.wagon:wagon-ssh:pom:2.1 from/to central (http://repo.maven.apache.org/maven2): Failed to transfer file: http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom. Return code is: 501, ReasonPhrase:HTTPS Required. -> [Help 2] Waiting for Jenkins to finish collecting data[ERROR] Plugin org.apache.maven.plugins:maven-clean-plugin:2.4.1 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-clean-plugin:jar:2.4.1: Could not transfer artifact org.apache.maven.plugins:maven-clean-plugin:pom:2.4.1 from/to central (http://repo.maven.apache.org/maven2): Failed to transfer file: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1.pom. Return code is: 501 , ReasonPhrase:HTTPS Required. -> [Help 1]


当前回答

我在Docker容器上使用干净的Maven/Java安装。

对我来说,我必须cd $M2_HOME/conf并编辑settings.xml文件。在<mirrors>…</mirrors>中添加以下块

<mirror>
  <id>central-secure</id>
  <url>https://repo.maven.apache.org/maven2</url>
  <mirrorOf>central</mirrorOf>
</mirror>

其他回答

我添加了下面的代码段设置。xml,它解决了这个问题,

<mirrors>
    <mirror>
        <id>maven-mirror</id>
        <name>Maven Mirror</name>
        <url>https://repo.maven.apache.org/maven2</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

使用Ubuntu 16.04, java 1.8.0_201。

我卸载了旧的maven,安装了maven 3.6.3, 仍然得到了Maven依赖失败的501错误。

意识到这可能是与要求https相关的信任库/密钥库问题。 发现现在可以使用jvm配置-Djavax选项。配置文件,请参见:https://maven.apache.org/configure.html。

因为我也在使用Tomcat,所以我从Tomcat (setenv.sh)中将密钥库和信任库配置复制到我的jvm中。配置,然后它工作!

还有一个选项可以在“export MAVEN_OPTS”中传递这个配置(当使用mvn generate时),但尽管这阻止了501错误,但它创建了另一个:它期望一个pom文件。

创建一个单独的jvm。配置文件工作完美,只是把它放在你的项目的根。

希望这能帮助到一些人,我花了一整天才弄明白!

我在最新版本(2020年8月)遇到了这个问题(在这台机器上很久没有使用Maven了),在阅读这些答案后,为什么它仍然是一个问题,我摸不着头脑。

原来我在我的主目录的.m2/文件夹里有一个旧的settings.xml,其中有一些多年前的自定义。

然而,即使删除了那个文件,我也无法解决这个问题。我最终删除了整个。m2文件夹。 我认为除了下载的资源,里面没有其他东西。也许仅仅删除repository/org/apache/maven/ prototype这样的文件夹就足够了。

Maven正在转向HTTPS并禁用HTTP访问

简而言之,从2020年1月15日起,Maven中央存储库不再支持HTTP连接(其他存储库也在这么做)。因此,您将指示您的Maven/Gradle设置使用HTTPS URL。

解决方案:

您可以从以下三种方法中选择一种。

Add a repository in your project´s pom.xml file <project> ... <repositories> <repository> <id>central maven repo</id> <name>central maven repo https</name> <url>https://repo.maven.apache.org/maven2</url> </repository> </repositories> </project> Add the repository into a profile in the settings.xml file. <profile> <id>my profile</id> <repositories> <repository> <id>central maven repo</id> <name>central maven repo https</name> <url>https://repo.maven.apache.org/maven2</url> </repository> </repositories> </profile> Update you maven version to a new one that uses https values as default. The lastest one at this moment 3.6.3 Download here

Gradle:

只替换HTTPS版本的URL。

repositories {
   maven { url "https://repo.maven.apache.org/maven2" }
}

我下载了最新的eclipse,并从这里使用https://www.eclipse.org/downloads/packages/release/,这解决了我的问题。