最近,在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]


当前回答

错误:

传输文件失败:http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom。

返回代码是:501,ReasonPhrase:HTTPS Required。

根本原因分析:

Maven中心期望客户端使用https,但客户端只发出普通的HTTP请求。

因此,请求下载名为“wagon-ssh-2.1”的软件包。Pom’失败了。

如何解决这个问题?

替换URL“http://repo.maven.apache.org/maven2”

与“https://repo.maven.apache.org/maven2”

在pom.xml文件或构建。项目的Gradle文件。

其他回答

我使用的是Maven的一个过时版本(3.0.3和3.1)。这些旧版本不再支持http存储库(如上所述)。升级到Maven 3.6对我来说是解决办法。

如果您使用的是旧版本的Netbeans,则必须在maven中进行更改才能在http上使用https

打开C:\Program Files\ NetBeans8.0.2\java\maven\conf\settings.xml 并将下面的代码粘贴在镜像标签之间

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

它将强制maven使用https://repo.maven.apache.org/maven2 url。

尝试在任何浏览器中点击下面的URL。它会返回501

http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom

请尝试https。它会下载一个pom.xml文件:

https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom

请在settings .xml文件中添加它(https://repo.maven.apache.org/maven2):

<repositories>
   <repository>
      <id>Central Maven repository</id>
      <name>Central Maven repository https</name>
      <url>https://repo.maven.apache.org/maven2</url>
   </repository>
</repositories>

我也面临着同样的问题。我尝试了两种解决方案,对我来说都很有效。

更新Maven版本存储库(Maven版本>= 3.2.3) 限制当前Maven版本使用HTTPS链接。

更新Maven版本存储库:

下载包含默认https地址的Apache Maven二进制文件(Apache Maven 3.6.3二进制文件)。在NetBeans菜单栏的工具(Java Maven对话框视图)中打开选项对话框窗口。并在Maven Home List Box (Maven Home List Box View)中选择browse选项。添加新下载的Apache Maven版本(Updated Maven Home List Box View)后,项目构建并成功运行。

限制当前Maven版本使用HTTPS链接:

在项目的pom.xml中包含以下代码。

<project>
      ...
    <pluginRepositories>
        <pluginRepository>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <releases>
                <updatePolicy>never</updatePolicy>
            </releases>
        </pluginRepository>
    </pluginRepositories>
    <repositories>
        <repository>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
            <layout>default</layout>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

在旧的grails环境中,唯一不需要升级就可以工作的是:

settings.xml

   <settings>
    <mirrors>
        <mirror>
          <id>centralhttps</id>
          <mirrorOf>central</mirrorOf>
          <name>Maven central https</name>
          <url>http://insecure.repo1.maven.org/maven2/</url>
        </mirror>
      </mirrors>
  </settings>