Maven: 아티팩트 설명자를 읽지 못함
나는 누군가가 내가 어려움을 겪고 있는 문제를 도와줄 수 있기를 바란다.
터미널에서 프로젝트를 빌드하려고 하면 다음과 같은 오류가 표시됨:
Failed to read artifact descriptor for com.morrislgn.merchandising.common:test-data-utils:jar:0.3b-SNAPSHOT: Could not find artifact com.morrislgn.merchandising:merchandising:pom:0.3b-SNAPSHOT
그common.test-data-utils
항아리는 별도의 프로젝트에 의해 만들어지고 이 프로젝트와 다른 프로젝트 사이에 공유된다(다른 프로젝트도 구축하지 않지만, 그것은 다른 문제로 귀결된다).
나는 지을 수 있다.com.morrislgn.merchandising.common:test-data-utils
문제없이, 나는 그것이 만드는 엔트리를 볼 수 있다..m2
내 컴퓨터의 로컬 리포지토리.나는 또한 이클립스에 있는 내 저장소를 재색인했다.
내 프로젝트의 POM에는 다음과 같은 항목이 있다.
<dependency>
<groupId>com.morrislgn.merchandising.common</groupId>
<artifactId>test-data-utils</artifactId>
<version>0.3b-SNAPSHOT</version>
</dependency>
그것은 나에게 맞는 것 같다 - POM은 Eclipse에서 볼 때 어떤 오류도 보고하지 않는다.
내가 여기서 뭘 놓치고 있는지, 아니면 뭘 잘못하고 있는지 말해줄 사람이 있을까?
너는 언제든지 시도할 수 있다.mvn -U clean install
-U
원격 리포지토리에서 업데이트된 릴리스 및 스냅샷을 강제로 검사하십시오.
부모 폼을 참조하는 일부 자식 프로젝트가 있고 부모 폼 디렉터리에서 설치하지 않은 경우(실행됨) 이 문제가 발생할 수 있다.mvn install
상위 디렉터리에서).자녀 프로젝트 중 하나는 형제 프로젝트에 의존할 수 있으며, 형제자매의 폼을 읽으려면 부모 폼 디렉토리에서 한 번 이상 설치하지 않으면 질문에 언급된 오류와 함께 실패하게 된다.
나는 새 컴퓨터로 프로젝트를 옮기다가 이 문제에 부딪혔어.나는 아동 프로젝트의 명령을 실행하는 버릇이 있었고 부모에게 설치 프로그램을 실행하지 않았다.
IntelliJ IDEA와 동일한 문제가 있었고 후속 조치가 효과적이었다.
- 에 가다
File
- 선택
Settings
- 선택
Build, Execution, Deployments
- 선택
Build Tools
방울져 - 선택
Maven
방울져 - 똑딱똑딱!
Always update snapshots
체크박스
Eclipse를 사용하는 경우 프로젝트 -> Maven -> Update Project를 마우스 오른쪽 버튼으로 클릭하십시오.그러면 Maven 프로젝트 업데이트 대화 상자가 열린다.
이 대화 상자에서 강제 업데이트/해제 확인란을 선택하고 확인을 누르십시오(아래 이미지를 참조하십시오).
이것은 나에게 효과가 있었다!
Eclipse를 사용하는 경우:
프로젝트 우클릭 > 속성 > 메이븐
작업 영역 프로젝트에서 종속성 해결을 클릭하지 않았는지 확인하십시오.
내가 대화에 꽤 늦은 건 알지만, 나도 이런 문제가 있었어.문제가 우리 회사 방화벽이었던 것 같아.내 해결책은 네트워크에서 플러그를 뽑고, 우리의 열린 무선에 접속한 다음 Eclipse를 통해 업데이트를 강요하는 것이었다.이것으로 모든 것이 해결되었다.
일식도 같은 문제였는데, 잘 다듬어진 빌드 라인이 잘 작동했거든. 하지만 이렇게 해 봐.
- .m2/dll로 들어가서 연결된 디렉토리를 지우다.
- 일식에 업데이트 축소 종속성 실행
에러가 사라진다....왜 mvn 커맨드 라인이 그 디렉토리들과 함께 일했는지 그리고 일식 .m2eclipse는 할 수 없었는지 모르겠다 그리고 그건 좀 거지같다.내 프로젝트는 이제 다시 일식일식일식일식일식일식일식으로 돌아가고
나는 IntelliJ를 사용하는 데에도 같은 문제가 있었다.pom.xml > maven > reimport에서 우클릭으로 해결했다.
나는 이 오류가 .jar 및 .pom 파일을 제외한 모든 항목이 표시된 리포지토리 폴더에서 삭제하여 이 문제를 해결했다.
나에게 있어, 그것은 내부에서 "User Setting.xml"을 설정하는 것과 관련이 있었다.
Window > preferences > Maven > User Settings > and then browsing to the user Settings inside the { maven unarchived directory / }/apache-maven-2.2.1/conf/settings.xml .
"유물 설명자를 읽지 못함" 문제는 일반적으로 maven 저장소에 있는 종속성의 pom 파일에 문제를 나타낸다.퐁파일의 이름이 maven 예상 이름과 동일한지 다시 한번 확인하고, 퐁파일의 내용이 유효한지도 확인해 볼 것을 제안한다.
나는 프로젝트가 있다.
A/
|--a1
|--a2
이제 우리 조직에는 또 다른 프로젝트가 있다.
B/
|--b1
|--b2
|--b3
(모든 모듈 a1, b1 등 및 상위 프로젝트 A, B는 상위 및 하위 표준 maven 규칙에 따라 자체 pom.xml을 가지고 있음)
두 프로젝트 모두 내 지역 일식(SVN에서)에 체크아웃되었다.A에 대해서 적극적으로 작업하고 있다.
B에서 개발된 우수한 공통 기능(b4)이 있다는 것을 알게 되었고, 그것을 사용할 필요가 있었다.
B/
|--b1
|--b2
|--b3
|--b4 (NEW)
b4 개발자는 이 b4 모듈을 우리 조직의 저장소에 인공물로 배치했다.나는 내 모듈의 POM 즉, a2의 pom.xml에 의존성을 포함시켰다.Eclipse는 repo에서 재입고된 유물을 다운받았고 나는 그 안에 있는 수업들을 가져올 수 있었다.
이제 문제가 시작됨...나는 어떤 목적을 위해 b4의 소스 코드를 확인해야 했고, 이미 B가 내 지역 일식을 체크아웃했기 때문에 SVN에서 그것을 업데이트하고 모듈 b4를 체크아웃했다.나는 또한 모듈 b4의 pom.xml을 클린, 패키지 등과 같은 표적들과 함께 실행했다.코딩을 마친 후 나는 모듈 a2의 JAR을 만들어야 했다.a2의 pom.xml과 BAM!! 오류 n개 a2 모듈의 "패키지"를 실행했다.이러한 오류는 또한 사용자 친화적이지 않았다.다만 통나무에 b4의 이름이 확실히 적혀 있었다.
해결책:여러 시간 동안 여러 솔루션을 시도한 후, 나는 B의 프로젝트 다이렉트타이(즉, ../codebase/B)에 있는 콘솔에서 "mvn -U 클린 설치"를 실행했다.B가 상위인 만큼 b4를 포함한 모든 모듈에 대해 clean install 명령이 실행되어 성공적으로 실행되었다.그 후 나는 A라는 나의 부모 프로젝트에 대해 "mvn -U 클린 설치"를 실행했다.그리고 이것은 효과가 있었다! a2 모듈이 성공적으로 컴파일되고, 설치되었고, (나중에 포장이 되었다)
여기서 중요한 점은 b4가 작업 공간에 있을 경우 b4만 설치하지 마십시오.B 전체를 청소해야 할 것이다.나는 주일의 답을 읽고 이 해결책에 도달했다.
편집: 여기서 한 가지 더 유의할 점은 만약 B 프로젝트가 로컬 환경에서 체크아웃되지 않았다면 이 문제가 발생하지 않았을 수 있다는 것이다.나는 내 지역 업무 공간에서 B를 체크아웃했기 때문에 이런 일이 일어났다고 생각하는 경향이 있다.
프로젝트 폴더 내부의 셸을 통해 탐색하고 다음 명령을 실행하십시오.
mvn -U clean install
보통 이것은 이미 당신의 문제를 해결할 것이다.
이와 같은 메시지가 나타나는 경우:
프로젝트의 종속성을 확인할 수 없음:war:0.0.1-Snapshot: com에서 종속성을 수집하지 못함sun.csn:swer-server:jar:1.9
그런 다음 다음을 실행하십시오.
export MAVEN_OPTS=-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2
그 다음:
mvn -U clean install
다시 한 번 당신의 의존성을 업데이트하기 위해서입니다.
그런 다음 깨끗한 면도 제작을 수행하십시오.
maven clean install
두 개의 다른 그룹아이드를 언급하셨는데com.morrislgn.merchandising.common
그리고com.johnlewis.jec.webpim.common
아마도 이것이 문제일 것이다.
나로서는 사실 의존성 POM에 문제가 있었던 것 같다.
나는 지트팩 가상 저장소를 사용하여 그것을 연구했는데, 그 저장소는 그들 자신의 POM 대신 그들의 URL을 기반으로 한 github 저장소를 포함할 수 있다(내 경우에 오류가 있었던 것 같다).
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
find ~/.m2 -name "*.lastUpdated" -exec grep -q "Could not transfer" {} \; -print -exec rm {} \;
일식을 통해 업데이트되는 행운은 없었다.mvn clean install -U(모든 것을 해결함)를 사용해야 했다.
나는 한동안 같은 문제를 겪었는데도 불구하고mvn -U clean install
문제가 해결되지 않았다!
나는 결국 전체를 삭제하여 문제를 해결했다..m2
폴더를 만든 다음 IDE를 다시 시작했는데 문제가 사라졌답니다!
그래서 때때로 문제는 당신의 지역 관리 저장소의 몇몇 비호환성이나 문제 때문에 불거질 것이다.
우리의 경우 multi-module maven 구성의 일부 프로젝트가 다른 프로젝트를 참조하는 동안 잘못된 groupId 이름 변경으로 인해 오류가 나타났다.
우리는 집적기 프로젝트를 가지고 있었다.billing-parent
두 개의 모듈 포함().billing-api
billing
):
com.company.team:billing-parent
|-com.company.team:billing-api
|-com.company.team:billing
프로젝트.billing
에 달려 있다billing-api
그러니까.pom.xml
다음과 같은 결과가 나왔다.
<dependency>
<groupId>com.company.team</groupId>
<artifactId>billing-api</artifactId>
<version>${project.version}</version>
</dependency>
groupId의 이름을 다음에서 바꾸기로 했다.com.company.team
로com.company.team.billing
. 우리는 부모님의 낡은 가치를 대체했다.pom.xml
에.<parent>
두 모듈의 부분.그러나 위에서 종속성을 업데이트하는 것을 잊었다.그래서 우리는 어떤 구성을 가지고 있었다.billing
프로젝트 참조 오래된billing-api
공예품결국 그것은 빌딩을 짓는다.billing
다음과 같은 오류와 함께 잠시 후 모듈:
[ERROR] Failed to execute goal on project billing: Could not resolve dependencies for project com.company.team.billing:billing:jar:3.5.1-SNAPSHOT: Failed to collect dependencies at com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failed to read artifact descriptor for com.company.team:billing-api:jar:3.5.1-SNAPSHOT: Failure to find <parent of the com.company.team:billing-parent project which is not available any more>
라는 사실에도 불구하고billing-api
모듈은 오류 없이 구축된다.
솔루션 1: 이름 바꾸기groupId
에dependency
뿐만 아니라.
솔루션 2: 교체groupId
에 의해${project.groupId}
이와 같은 속성:
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>billing-api</artifactId>
<version>${project.version}</version>
</dependency>
결론.따라서 다중 모듈 구성에서 오류가 발생할 경우 주의할 사항: 철저히 점검groupId
그리고artifactId
인접 모듈에 대한 종속성.
나도 비슷한 문제가 있었어.필자의 경우, 내 .m2/repositums 폴더에 있는 testng 버전이 손상되었지만, 그것을 삭제하고 다시 manven 업데이트를 해보니 모든 것이 잘 작동했다.
이 오류는 기본적으로 메이븐이 로컬 리포지토리에서 특정 종속성을 읽을 수 없다는 것이다.항아리 파일이 제대로 다운로드되지 않아서 그런 일이 일어날 수도 있어.따라서 managed 로컬 저장소로 이동하여 .lastUpdated 확장 파일이 없는지 확인하십시오.
내가 용감하다는 거 알아 9년 후에...
나에게 그것은 종속성이 발견되지 않는 문제였다.나는 마침내 '오류 로그'가 열린 '오류 로그' 보기를 보고 진짜 이슈를 찾았다.An internal error occurred during: "Building".
-라인. 두 번 클릭하면 스택트레이스가 있는 팝업창이 나타났고 마지막 원인이 마침내 내 지역 저장소에 있는 깨진 JAR이 드러났다.내가 그것을 치웠고 Eclipse/m2e는 다시 일할 수 있었다.
일식 때 이런 문제가 있었는데mvn -U clean install
작동하지 않았지만 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Maven->Update Project를 선택하면 해결됨.
나는 방금 Maven을 처음 사용하면서 STS Eclipse를 사용하기 시작했어.내가 설정한 프로젝트는 이미 자체 settings.xml을 가지고 있었다.이 경우 실행 구성에서 settings.xml 파일을 업데이트하십시오.
pom.xml을 마우스 오른쪽 버튼으로 클릭하고 "다른 이름으로 실행" -> "."
여기서 "User settings"(사용자 설정)이라고 표시되면 File(파일) 버튼을 클릭하고 settings.
나는 이것이 당신의 프로젝트와 관련이 있다고 생각하지만 나의 "골스"는 "깨끗한 설치"로 설정되었고 나는 "스킵 테스트"를 확인했다.
이 점이 도움이 되었다.
IDE(Red Hat CodeReady Studio, 내 경우는 Red Hat CodeReady Studio).
Windows -> Show View -> Terminal -> Open/Add local 터미널
다음과 같이 명령 실행 >
$cd /pom-file-path/
$mvn -U clean install
참조URL: https://stackoverflow.com/questions/6642146/maven-failed-to-read-artifact-descriptor
'Programing' 카테고리의 다른 글
어떤 구성 요소가 어떤 작업을 Vuex라고 부르는지 알 수 있는가? (0) | 2022.04.25 |
---|---|
Vue js 2 - 하위 구성 요소에서 App.vue의 데이터 액세스 (0) | 2022.04.25 |
int128_t는 왜 없는가? (0) | 2022.04.24 |
Ve-Validate 및 Vue 멀티셀렉트 사용 문제 (0) | 2022.04.24 |
구성 요소가 불필요한 종속성을 수집하지 못하도록 하는 방법 (0) | 2022.04.24 |