对 http://repo1.maven.org/maven2/ 的请求返回 501 HTTPS 必需状态和正文

Gir*_*raj 46 java maven

截至 2020 年 1 月 15 日,我在向中央存储库提出请求时收到以下回复:

Requests to http://repo1.maven.org/maven2/ return a 501 HTTPS Required status and a body:

501 HTTPS Required. 
Use https://repo1.maven.org/maven2/
More information at https://links.sonatype.com/central/501-https-required
Requests to http://repo.maven.apache.org/maven2/ return a 501 HTTPS Required status and a body:

501 HTTPS Required. 
Use https://repo.maven.apache.org/maven2/
More information at https://links.sonatype.com/central/501-https-required
Run Code Online (Sandbox Code Playgroud)

如何满足此要求以便我可以重新访问 Central?

我在控制台中收到此错误

    [INFO] Scanning for projects...
    [INFO] 
    [INFO] ----------------------------<  >----------------------------
    [INFO] Building demo 0.0.1-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    [INFO] Downloading from : http://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/3.12.0/mongo-java-driver-3.12.0.pom
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  11.136 s
    [INFO] Finished at: 2020-01-16T15:27:53+05:30
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal on project demo: Could not resolve dependencies for project com.tcs:demo:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at org.mongodb:mongo-java-driver:jar:3.12.0: Failed to read artifact descriptor for org.mongodb:mongo-java-driver:jar:3.12.0: Could not transfer artifact org.mongodb:mongo-java-driver:pom:3.12.0 from/to central (http://repo1.maven.org/maven2/): Failed to transfer http://repo1.maven.org/maven2/org/mongodb/mongo-java-driver/3.12.0/mongo-java-driver-3.12.0.pom. Error code 501, HTTPS Required -> [Help 1]
    [ERROR] 
    [ERROR] To see the full stack trace ``of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException
Run Code Online (Sandbox Code Playgroud)

并使用站点插件:

[错误] 无法在项目 my-proj 上执行目标 org.apache.maven.plugins:maven-site-plugin:2.2:site (default-site):SiteToolException:无法从存储库解析站点描述符:ArtifactResolutionException:Unable定位站点描述符:无法传输工件 org.xy:name:xml:site_en:3.5.1.b550 from/to central ( http://repo1.maven.org/maven2 ): Transfer failed for http://repo1 .maven.org/maven2/org/x/y/3.5.1.b550/name-3.5.1.b550-site_en.xml 501 需要 HTTPS

Gir*_*raj 55

自 2020 年 1 月 15 日起,中央存储库不再支持通过普通 HTTP 进行的不安全通信,并要求对存储库的所有请求都通过 HTTPS 进行加密。

如果您收到此错误,则需要将所有对 Maven Central 的 URL 引用替换为其规范的 HTTPS 对应项:

http://repo1.maven.org/maven2/替换为https://repo1.maven.org/maven2/

http://repo.maven.apache.org/maven2/替换为https://repo.maven.apache.org/maven2/

如果由于任何原因您的环境不支持 HTTPS,您可以选择在http://insecure.repo1.maven.org/maven2/上使用我们专用的不安全端点

有关转向 HTTPS 的更多背景信息,请参阅https://blog.sonatype.com/central-repository-moving-to-https

  • 你如何做出这个改变?从其他帖子中,我尝试了他们的建议,但仍然不起作用。我修改了 settings.xml 并将存储库添加到我的 pom.xml 中。 (2认同)
  • 对于专家来说,这真是太棒了。突然,maven 停止工作自己的设置。 (2认同)

小智 51

我修复了以下步骤,但它使用 http:1) 到 .m2 文件夹 2) 创建文件 settings.xml 3) 在下面复制粘贴

<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>
Run Code Online (Sandbox Code Playgroud)

  • 为什么不在 URL 中使用 HTTPS?使用 https://repo1.maven.org/maven2/ 也可以解决这个问题。 (5认同)

rog*_*ack 11

请注意,您的父 pom 也可以(重新)定义存储库,并且如果它出于某种原因覆盖了中央和指定的 http,则您需要修复它(因此需要修复:~/.m2/settings.xml 以及父poms)。

如果您无法在父 pom 中修复它,您可以覆盖父 pom 的 repo,就像这样,在您的子 pom 中(从 3.6.3 默认超级 pom 中提取,似乎他们也从 repo1 更改了名称):

  <repositories>
    <repository>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url> <!-- the https you've been looking for -->
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled> <!-- or set to false if desired, default is true /sf/answers/4317917761/ -->
      </snapshots>
    </repository>
  </repositories>
Run Code Online (Sandbox Code Playgroud)


小智 10

尝试在 pom.xml 中添加下一个 statament

<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>
Run Code Online (Sandbox Code Playgroud)

此外,您必须在以下位置指定存储库:MAVEN\conf\settings.xml

<mirrors>
 <mirror>
   <id>other-mirror</id>
   <mirrorOf>central</mirrorOf>
   <name>Other Mirror Repository</name>
   <url>http://insecure.repo1.maven.org/maven2/</url>
 </mirror>
 <mirror>
  <id>internal-repository</id>
  <name>Maven Repository Manager running on https://repo1.maven.org/maven2</name>
  <url>https://repo1.maven.org/maven2</url>
  <mirrorOf>*</mirrorOf>
 </mirror>
</mirrors>
Run Code Online (Sandbox Code Playgroud)


Pan*_*lva 7

仅供 Gradle 用户使用,

repositories {
   maven {
      url = 'https://repo.maven.apache.org/maven2'
   }
} 
Run Code Online (Sandbox Code Playgroud)