maven 종속성이 501 오류로 인해 실패함
최근 젠킨스에서 실행 중인 메이븐 빌드 작업은 메이븐 센트럴에서 의존성을 끌어낼 수 없고 HTTPS를 사용해야 한다는 아래의 예외조항과 함께 실패하고 있다. HTTP에서 HTTPS로 요청을 어떻게 변경해야 할지 잘 모르겠다. 누가 이 문제에 대해 안내해 줄 수 있을까?
[ERROR] 확인할 수 없는 빌드 확장:
플러그인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]
Jenkins의 수집이 끝나기를 기다리는 중
data[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를 통해 암호화하도록 요구한다.
메이븐(3.6.0, 3.6.1로 시도)의 최신 버전은 이미 HTTPS URL을 기본적으로 사용하고 있는 것으로 보인다.
주요 리포지토리가 전환되는 날짜:
Java 빌드가 1월 13일부터 중단될 수 있음(HTTPS에 대한 repo 액세스를 아직 전환하지 않은 경우)
업데이트: maven 3.2.3 maven central에서 HTTPS를 통해 액세스되는 것 같음. https://stackoverflow.com/a/25411658/5820670 참조
Maven Change 로그(http://maven.apache.org/docs/3.2.3/release-notes.html)
나는 같은 문제에 직면해 있다.내가 시도한 해결책은 두 가지가 있는데, 둘 다 나에게 잘 맞는다.
- Maven 버전 저장소 업데이트(Maven 버전 >= 3.2.3)
- HTTPS 링크를 사용하도록 현재 Maven 버전을 제한하십시오.
Maven 버전 리포지토리 업데이트:
기본 https 주소(Apache Maven 3.6.3 이진)가 포함된 Apache Maven 이진 파일을 다운로드하십시오.그리고 NetBeans 메뉴 모음(Java Maven Dialog View)의 도구에서 Options(옵션) 대화 창을 여십시오.그리고 Maven Home List Box(Maven Home List Box View)에서 Browse 옵션을 선택하십시오.새로 다운로드한 Apache Maven 버전(업데이트된 Maven Home List Box View)을 추가하면 프로젝트가 성공적으로 구축 및 실행된다.
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>
나는 도커 용기에 메이븐/자바를 새로 설치한 것을 사용하고 있었다.
나로서는 그럴 수밖에 없었다.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>
이것을 pom.xml 파일에 추가하십시오.그것은 나에게 잘 맞는다.
<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>
Maven이 HTTPS로 이동하고 HTTP 액세스를 사용하지 않도록 설정하는 중
단편적으로, 2020년 1월 15일부터, 메이븐 중앙 저장소는 더 이상 HTTP 연결을 지원하지 않는다(다른 저장소는 같은 일을 하고 있다).따라서 Maven/Gradle 설정을 HTTPS URL을 사용하도록 지정하십시오.
해결책:
다음 세 가지 방법 중 하나를 선택할 수 있다.
프로젝트의 리포지토리 추가
pom.xml
파일<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>
의 프로필에 리포지토리 추가
settings.xml
파일<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>
- maven 버전을 https 값을 기본값으로 사용하는 새 버전으로 업데이트하십시오.지금 이 순간 가장 마지막 3.6.3 다운로드
Gradle의 경우:
HTTPS 버전의 URL만 교체하십시오.
repositories {
maven { url "https://repo.maven.apache.org/maven2" }
}
setting.xml에 코드 세그먼트를 따라 추가되었고 문제가 해결되었다.
<mirrors>
<mirror>
<id>maven-mirror</id>
<name>Maven Mirror</name>
<url>https://repo.maven.apache.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
나는 구식 버전의 메이븐(3.0.3과 3.1)을 사용하고 있었다.이러한 이전 버전은 더 이상 http 리포지토리를 지원하지 않는다(위에서 언급한 바와 같이).메이븐 3.6으로 업그레이드한 것이 내게는 해결책이었다.
다른 답변에서 언급했듯이, 이제 https는 메이븐 센트럴에 요청해야 하는 반면, 이전 버전의 메이븐은 http를 사용한다.
MAVEN 3.2.3+로 업그레이드/할 수 없는 경우 MAVEN_에 다음 코드를 추가하여 해결 방법을 선택하십시오.HOME\conf\settings.xml을 사용하여<profiles>
섹션:
<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>
필요할 때 POM에서 이 설정을 비활성화/오버라이드하지 않는 한, 이 설정은 항상 활성 설정일 것이다.
나도 같은 문제가 있지만 젠킨스 대신 GitLab을 사용해.이 문제를 극복하기 위해 내가 해야 했던 조치들은 다음과 같다.
- 내 프로젝트는 GitLab에 있어서 내가 지속적으로 통합해야 하는 Docker 이미지를 가리키는 .yml 파일을 사용하며, 사용하는 이미지에는 http:///maven URL이 있다.그래서 https:///maven으로 바꿨어.
- 같은 Dockerfile 이미지에는 Maven 3.0.1의 이전 버전이 있어 하룻밤 사이에 문제가 생겼어.최신 버전 3.6.3을 얻기 위해 도커 파일을 업데이트했다.
- 그리고 나서 나는 그 이미지를 내 온라인 저장소에 배치했고, 새로운 이미지를 사용하도록 Maven 프로젝트 ymfile을 업데이트했다.
- 그리고 마지막으로 주요 프로젝트 POM 파일을 https://maven으로 업데이트했다...http:///maven 대신
나는 그것이 내 설정에 더 구체적이라는 것을 깨달았다.그러나 위의 모든 단계를 수행하지 않고 나는 여전히 이 오류 메시지를 계속 수신할 것이다.Return code is: 501 , ReasonPhrase:HTTPS Required
나(기업 코더)에게도 거울 저장소를 추가하는 것은settings.xml
나는 또한 도커 컨테이너 안에서 메이븐을 사용하고 있다.
<mirrors>
<mirror>
<id>https-mirror</id>
<name>Https Mirror Repository</name>
<url>https://repo1.maven.org/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
모든 기업 코디네이터들에게 이상적으로는, 만약 당신이 이 오류를 발견한다면, 그것은 당신의 코드 베이스가 여전히 오픈 소스 커뮤니티에서 만들어지고 있다는 것을 의미한다.사내 회사인 메이븐 리포지토리 매니저와 함께 "중앙" 리포지토리를 타고 건너야 한다.
settings.xml로 이동하여 http://에서 https://로 중앙 저장소 URL을 재정의할 수 있음
<M2_HOME>/conf/settings.xml
미러 섹션을 찾아 다음 항목을 추가하십시오.
<mirror>
<id>other-mirror</id>
<name>Other Mirror Repository</name>
<url>https://other-mirror.repo.other-company.com/maven2</url>
<mirrorOf>central</mirrorOf>
</mirror>
URL 섹션에서 http://repo1.maven.org/maven2/ 또는 http://repo.maven.apache.org/maven2/을 사용하고 있다면
http://repo1.maven.org/maven2/을 https://repo1.maven.org/maven2/으로 대체하십시오.
http://repo.maven.apache.org/maven2/을 https://repo.maven.apache.org/maven2/으로 대체하십시오.
이쪽에 있는 회사 소스 제어 관리/리포지토리 URL을 이상적으로 사용해야 한다.이렇게 하면 오픈 소스 메이븐 저장소 커뮤니티와의 모든 접촉을 차단할 수 있기 때문이다.
다른 답변에서 언급했듯이 2020년 1월 15일부터 시행되는 중앙 메이븐 저장소는 일반 HTTP를 통한 안전하지 않은 통신을 지원하지 않는다.
Netbeans 이전 버전을 사용하는 경우 maven에서 http over http를 사용하려면 변경해야 함
C:\Program Files\ 열기넷빈즈8.0.2\cHB\maven\conf\reconf\respons.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을 사용하도록 강제할 것이다.
Ubuntu 16.04 사용, 자바 1.8.0_201.
나는 오래된 maven을 설치하지 않고 Maven 3.6.3을 설치했는데, 여전히 Maven 의존성이 501 오류로 실패한다는 이 오류를 얻었다.
https 요구와 관련된 신뢰 저장소/키 저장소 문제가 될 수 있다는 것을 깨달았다.이제 jvm.config 파일을 사용하여 -Djavax 옵션을 구성할 수 있는 것으로 확인되었으며, https://maven.apache.org/configure.html을 참조하십시오.
나도 Tomcat을 사용하고 있기 때문에 나는 Tomcat(setenv.sh)에서 jvm.config로 키스토어 & 트러스트스토어 구성을 복사했고, 그 후에 효과가 있었다!
'MAVEN_OPS 내보내기(mvn generate를 사용할 때)에서 이 구성을 통과할 수 있는 옵션도 있지만, 이것이 501 오류를 멈추기는 했지만, 또 다른 오류를 생성했다: 그것은 퐁파일을 기대했다.
별도의 jvm.config 파일을 생성하면 완벽하게 작동하므로 프로젝트의 루트에 넣으십시오.
이게 누군가에게 도움이 됐으면 좋겠어. 그걸 알아내는데 하루 종일 걸렸어!
jcenter에서도 같은 이슈가 발생하고 있다.
2020년 1월 13일부터 Jcenter는 HTTPS에서만 이용할 수 있다.
같은 것을 사용하여 종속성을 얻는 프로젝트는 문제에 직면하기 시작할 것이다.빠른 수정을 위해 build.gradle에서 다음을 수행하십시오.
대신에
repositories {
jcenter ()
//others
}
다음을 사용하십시오.
repositories {
jcenter { url "http://jcenter.bintray.com/"}
//others
}
오류:
파일을 전송하지 못함: http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom.
반송 코드: 501 , 이유:HTTPS 필요.
근본 원인 분석:
메이븐 센트럴은 클라이언트가 https를 사용할 것으로 예상하지만 클라이언트는 일반 HTTP 요청만 하고 있다.
따라서 'wagon-ssh-2.1.pom'이라는 이름의 패키지를 다운로드하라는 요청은 실패했었다.
어떻게 문제를 해결할 것인가?
URL "http://repo.maven.apache.org/maven2" 교체
"https://repo.maven.apache.org/maven2"과 함께
프로젝트의 pom.xml 파일 또는 build.gradle 파일로.
다음 링크는 나를 곤경에서 벗어나게 해주었고
https://support.sonatype.com/hc/en-us/articles/360041287334-Central-501-HTTPS-Required
maven, apache-maven/conf/settings.xml에서 변경할 수 있다.또는 pom.xml에 명시하는 경우 해당 위치에서 변경하십시오.
이전
<repository>
<id>maven_central_repo</id>
<url>http://repo.maven.apache.org/maven2</url>
</repository>
지금
<repository>
<id>maven_central_repo</id>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
http에서 https로 변경 사항 기록
필요한 사람이 있을 경우 공유:
이전 Gradle 구성(단순 프로젝트인 경우 Gitlab , Docker 배포 없음)
repositories {
google()
jcenter()
maven { url "http://dl.bintray.com/davideas/maven" }
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'http://repo1.maven.org/maven2' }
maven { url 'http://jcenter.bintray.com' }
}
새 구성:
repositories {
google()
jcenter()
maven { url "https://dl.bintray.com/davideas/maven" }
maven { url 'https://plugins.gradle.org/m2/' }
maven { url 'https://repo1.maven.org/maven2' }
maven { url 'https://jcenter.bintray.com' }
}
https를 주목하라.해피 코딩 :)
현재 환경에서 HTTPS를 지원하지 않으므로 보안되지 않은 버전의 repo를 추가하면 Sonatype에 따라 http://insecure.repo1.maven.org에서 문제를 해결함
<repositories>
<repository>
<id>Central Maven repository</id>
<name>Central Maven repository insecure</name>
<url>http://insecure.repo1.maven.org</url>
</repository>
</repositories>
원래 https://stackoverflow.com/a/59796324/32453에서 사용되었지만 다음과 같은 기능이 유용할 수 있다.
부모 폼이 리포지토리도 정의할 수 있으므로(re) 주의하십시오. 어떤 이유로든 중앙 및 지정된 http를 오버라이드한 경우 이를 수정하십시오(고정할 위치: ~/.m2/settings.xml 및 상위 폼).
부모 폼에서 고칠 수 없는 경우, 부모 폼의 레포(기본값 3.6.3 슈퍼 폼에서 추출한 이름)를 자식 폼에서 다음과 같이 재정의할 수 있다(3.6.3 디폴트 수퍼 폼에서 추출한 경우, 부모 폼의 레포도 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 true if desired, default is false -->
</snapshots>
</repository>
</repositories>
이 실수는 나에게도 일어났다.나는 위에서 무함마드 우머가 말한 대로 했다.그러나 스프링 부트 종속성에 대한 오류만 해결했으며 스프링 부트 종속성은 하위 종속성을 가지고 있다.자, 21개의 오류가 있었다.이전에는 2개의 오류였다.다음과 같은 경우:
Non-resolvable import POM: Could not transfer artifact org.springframework.cloud:spring-cloud-dependencies:pom:Hoxton.SR3 from/to central
오류 메시지에도 https가 필요하다.
나는 3.2.2에서 3.6.3으로, 자바 버전을 8에서 11로 업데이트했다.이제 필요한 https의 오류는 모두 사라졌다.
maven 버전을 업데이트하려면 다음과 같이 하십시오.
- 여기에서 최신 maven 다운로드: maven 다운로드
- 압축을 풀고 다음으로 이동하십시오.
/opt/maven/
- 경로 설정
export PATH=$PATH:/opt/maven/bin
- 그리고, 또한 PATH에서 오래된 면도칼을 제거한다.
나는 가장 최근의 일식을 다운받았고 내 문제를 해결한 https://www.eclipse.org/downloads/packages/release/에서 사용할 타르트를 다운로드했다.
나는 최신판(2020년 8월)으로 이 문제를 맞닥뜨리고 (이 기계에 오랫동안 메이븐을 사용하지 않은 후) 왜 아직도 이런 답을 읽고도 문제가 될 수 있는지 머리를 긁적거리고 있었다.
알고 보니 늙은이가 있었다.settings.xml
에 앉아 있는.m2/
몇 년 전의 사용자 정의가 있는 내 홈 디렉토리의 폴더.
하지만 그 파일을 삭제한다고 해서 고쳐지지는 않았어.나는 결국 전체를 삭제했다..m2
폴더로 만들다
다운로드한 자원 외에는 그 안에 다른 것이 없었던 것 같다.다음과 같은 폴더를 삭제하는 것repository/org/apache/maven/archetype
충분했을 거야
나는 마지막 netbeans 버전 12.2를 다운받았고, 문제가 해결되었다.
오래된 그레일 환경에서 업그레이드 없이 작동하는 유일한 방법은 다음과 같다.
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>
다음 리포지토리를 pom.xml에 추가하십시오.
<project>
...
<repositories>
<repository>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>https://repo1.maven.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
...
</project>
참조URL: https://stackoverflow.com/questions/59763531/maven-dependencies-are-failing-with-a-501-error
'IT이야기' 카테고리의 다른 글
인덱스에서 스플라이싱되지 않은 스플라이스는? (0) | 2022.05.11 |
---|---|
구문 분석 방법구문 분석 방법VUE.js의 html 태그에 대한 문자열로VUE.js의 html 태그에 대한 문자열로 (0) | 2022.05.11 |
정적 메서드는 Java에서 상속되는가? (0) | 2022.05.11 |
구성 요소의 Vuex (0) | 2022.05.10 |
Vue.js: 사용자가 로그인하거나 로그인하지 않을 때 Vuex Store 상태를 기준으로 탐색 모음의 버튼 표시/숨기기 (0) | 2022.05.10 |