[java] Maven 종속성이 501 오류로 실패

최근 Jenkins 에서 실행되는 Maven 빌드 작업 은 Maven Central 에서 종속성을 가져올 수 없으며 HTTPS를 사용해야한다는 예외를 제외하고는 실패 합니다 . HTTP 에서 HTTPS로 요청을 변경하는 방법을 잘 모르겠습니다 . 누군가이 문제에 대해 나를 안내 할 수 있습니까?

[오류] 확인할 수없는 빌드 확장 프로그램 :
플러그인 org.apache.maven.wagon:wagon-ssh:2.1또는 해당 종속성 중 하나를 해결할 수 없습니다.
에 대한 종속성을 수집
하지 못했습니다 org.apache.maven.wagon:wagon-ssh:jar:2.1 ():
아티팩트 디스크립터를 읽지 못했습니다 org.apache.maven.wagon:wagon-ssh:jar:2.1:
아티팩트 org.apache.maven.wagon:wagon-ssh:pom:2.1를 중앙에서 / 중앙으로 전송할 수 없습니다 ( http : //repo.maven.apache org / maven2 ) :
파일 전송 실패 : http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom .
리턴 코드는 다음과 같습니다.501, ReasonPhrase:HTTPS Required. -> [Help 2]

Jenkinsdata[ERROR]
플러그인 org.apache.maven.plugins:maven-clean-plugin:2.4.1또는 종속 항목 중 하나를 수집하기를 기다리는 중을 해결할 수 없습니다.
아티팩트 디스크립터를 읽지 못했습니다 org.apache.maven.plugins:maven-clean-plugin:jar:2.4.1:
아티팩트 org.apache.maven.plugins:maven-clean-plugin:pom:2.4.1를 중앙에서 또는 중앙으로 전송할 수 없습니다 ( http://repo.maven.apache.org/maven2 ) :
실패 전송 파일 : http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1.pom .
리턴 코드는 다음과 같습니다.501 , ReasonPhrase:HTTPS Required. -> [Help 1]



답변

관찰 된 오류의 이유는 Central 501 HTTPS Required에 설명되어 있습니다.

2020 년 1 월 15 일부터 Central Repository는 더 이상 일반 HTTP를 통한 안전하지 않은 통신을 지원하지 않으며 리포지토리에 대한 모든 요청은 HTTPS를 통해 암호화되어야합니다.

최신 버전의 Maven (3.6.0, 3.6.1으로 시도)이 기본적으로 이미 HTTPS URL을 사용하고있는 것 같습니다.

주요 리포지토리가 전환되는 날짜는 다음과 같습니다.

1 월 13 일부터 Java 빌드가 중단 될 수 있습니다 (아직 HTTPS에 대한 repo 액세스를 전환하지 않은 경우)

업데이트 : maven 3.2.3과 같습니다. maven central은 HTTPS를 통해 액세스합니다. https://stackoverflow.com/a/25411658/5820670

메이븐 변경 로그 ( http://maven.apache.org/docs/3.2.3/release-notes.html )


답변

나는 같은 문제에 직면하고있다. 내가 시도한 두 가지 솔루션이 있으며 둘 다 잘 작동합니다.

  • Maven 버전 저장소 업데이트 (Maven 버전> = 3.2.3)
  • HTTPS 링크를 사용하도록 현재 Maven 버전을 제한하십시오.

Maven 버전 저장소를 업데이트하십시오.

기본 https 주소가 포함 된 Apache Maven 이진 ( Apache Maven 3.6.3 이진 )을 다운로드하십시오. 그리고 열 옵션 대화 상자 창을 넷빈즈 메뉴 바 (의 도구에서 자바 메이븐 대화보기 ). 그리고 Maven Home List Box ( Maven Home List Box View ) 에서 찾아보기 옵션을 선택하십시오 . Apache Maven 새로 다운로드 한 버전 ( 업데이트 된 Maven 홈 목록 상자보기 )을 추가하면 프로젝트가 빌드되고 성공적으로 실행됩니다.

HTTPS 링크를 사용하도록 현재 Maven 버전을 제한하십시오.

프로젝트의 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>


답변

2020 년 1 월 15 일부터 Central Repository는 더 이상 일반 HTTP를 통한 안전하지 않은 통신을 지원하지 않으며 리포지토리에 대한 모든 요청은 HTTPS를 통해 암호화되어야합니다. .

이 오류가 발생하면 Maven Central에 대한 모든 URL 참조를 표준 HTTPS로 바꿔야합니다.

( 소스 )

프로젝트의 build.gradle에서 다음과 같이 변경했습니다.

낡은:

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

새로운:

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


답변

모든 브라우저에서 아래 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

setting.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의 중앙 저장소를 업데이트하고 http 대신 https 를 사용 하십시오 .

<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>


답변

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>


답변

오래된 Maven 버전 (3.0.3 및 3.1)을 사용하고있었습니다. 이러한 이전 버전은 더 이상 http 리포지토리를 지원하지 않습니다 (위에서 언급 한 것처럼). Maven 3.6으로 업그레이드하면 문제가 해결되었습니다.