Maven dependencies are failing with a 501 error

前端 未结 25 3221
南旧
南旧 2020-11-22 06:28

Recently Maven build jobs running in Jenkins are failing with the below exception saying that they couldn\'t pull dependencies from Maven Central

相关标签:
25条回答
  • 2020-11-22 07:21

    Try to hit the below URL in any browser. It will return 501

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

    Please try with https. It will download a pom.xml file:

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

    Please add it (https://repo.maven.apache.org/maven2) in the setting.xml file:

    <repositories>
       <repository>
          <id>Central Maven repository</id>
          <name>Central Maven repository https</name>
          <url>https://repo.maven.apache.org/maven2</url>
       </repository>
    </repositories>
    
    0 讨论(0)
  • 2020-11-22 07:21

    I was using a clean install of Maven/Java on a Docker container.

    For me, I had to cd $M2_HOME/conf and edit the settings.xml file there. Add the following block inside <mirrors>...</mirrors>

    <mirror>
      <id>central-secure</id>
      <url>https://repo.maven.apache.org/maven2</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
    
    0 讨论(0)
  • 2020-11-22 07:21

    I hit this problem with the latest version (August 2020) (after not using Maven on this machine for ages) and was scratching my head as to why it could still be an issue after reading these answers.

    Turns out I had an old settings.xml sitting in the .m2/ folder in my home directory with some customisations from years ago.

    However, even deleting that file didn't fix it for me. I ended up deleting the entire .m2 folder.
    I don't think there was anything else in it except for downloaded resources. Maybe just deleting folders like repository/org/apache/maven/archetype would have been sufficient.

    0 讨论(0)
  • 2020-11-22 07:23

    I am facing the same problem. There are two solutions that I tried, and both works fine for me.

    • Update the Maven version repository (Maven version >= 3.2.3)
    • Restrict the current Maven version to use HTTPS links.

    Update the Maven version repository:

    Download the Apache Maven binary that includes the default https addresses (Apache Maven 3.6.3 binary). And open the Options dialog window in tools of NetBeans menu bar (Java Maven Dialog View). And select browse option in Maven Home List Box (Maven Home List Box View). After adding the Apache Maven newly downloaded version (Updated Maven Home List Box View), the project builds and runs successfully.

    Restrict the current Maven version to use HTTPS links:

    Include the following code in pom.xml of your project.

    <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>
    
    0 讨论(0)
  • 2020-11-22 07:23

    As stated in other answers, https is now required to make requests to Maven Central, while older versions of Maven use http.

    If you don't want to/cannot upgrade to Maven 3.2.3+, you can do a workaround by adding the following code into your MAVEN_HOME\conf\settings.xml into the <profiles> section:

    <profile>
        <id>maven-https</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <repositories>
            <repository>
                <id>central</id>
                <url>https://repo1.maven.org/maven2</url>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>central</id>
                <url>https://repo1.maven.org/maven2</url>
                <snapshots>
                    <enabled>false</enabled>
                </snapshots>
            </pluginRepository>
        </pluginRepositories> 
    </profile>
    

    This will be always an active setting unless you disable/override it in your POM when needed.

    0 讨论(0)
  • 2020-11-22 07:24

    I was using an outdated version of Maven (3.0.3 and 3.1). These older versions no longer supports http repositories (as mentioned above). Upgrading to Maven 3.6 was the fix for me.

    0 讨论(0)
提交回复
热议问题