메이븐 : 이슈 디스크립터를 읽지 못했습니다


258

나는 누군가 어려움을 겪고있는 문제로 나를 도울 수 있기를 바랍니다.

터미널에서 프로젝트를 빌드하려고하면이 오류가 발생합니다.

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있으며 내 컴퓨터 의 로컬 저장소 에서 항목을 볼 수 있습니다 . Eclipse에서 저장소를 다시 색인화했습니다.

내 프로젝트의 POM에는 다음과 같은 항목이 있습니다.

<dependency>
    <groupId>com.morrislgn.merchandising.common</groupId>
    <artifactId>test-data-utils</artifactId>
    <version>0.3b-SNAPSHOT</version>
</dependency>

나에게 맞는 것 같습니다-POM은 Eclipse에서 볼 때 오류를보고하지 않습니다.

누군가 내가 여기서 누락되었거나 잘못하고있는 것을 말해 줄 수 있습니까?

답변:


183

당신은 항상 시도 할 수 있습니다 mvn -U clean install

-U 원격 저장소에서 업데이트 된 릴리스 및 스냅 샷을 강제 점검합니다.


40
@MrPhi : m2e 플러그인이 있다면 Maven-> "Update Project ..."를 사용할 수 있습니다. 다음 대화 상자에는 스냅 샷 및 릴리스를 강제로 업데이트 할 수있는 옵션이 있습니다.
Aaron Digulla

1
@AaronDigulla 대화 상자이므로 오류가 발생합니다.
Jeroen

1
이 작업을 수행하려면 프로젝트의 루트 디렉토리 내부에서 명령을 실행해야합니다.
Daria

나는 비슷한 문제가 있었다. 이것은 실제로 도움이되며 개인 mvn repo를 사용하는 경우 ~/.m2/setting.xml먼저 미러 섹션 에 추가하고 실행 한 후에 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 하단 섹션 아래 에 버튼 이 mvn -U clean install있는지 확인하십시오 ). ReimportMavenReimport
JACK ZHANG

1
@TomaszWaszczyk : 예 있습니다. 1. Windows 쇼보기-> 터미널. 2. 로컬 터미널 추가 3. cd PomFilePath 4. 명령 실행
Vishnu Dahatonde

142

부모 pom을 참조하는 일부 자식 프로젝트가 있고 부모 pom 디렉토리에서 설치하지 않은 경우 ( mvn install부모 디렉토리에서 실행)이 문제가 발생할 수 있습니다 . 자식 프로젝트 중 하나는 형제 프로젝트에 의존 할 수 있으며 형제의 pom을 읽으려고 할 때 부모 pom 디렉토리에서 적어도 한 번 설치하지 않으면 질문에 언급 된 오류와 함께 실패합니다.

프로젝트를 새 컴퓨터로 옮길 때이 문제가 발생했습니다. 자식 프로젝트에서 명령을 실행하는 습관이 있었고 부모에서 설치를 실행하지 않았습니다.


13
또한 mvn install부모에서 실행할 때 -N비 재귀 작업을 추가 할 수도 있습니다 . 이로 인해 maven은 모든 모듈 (실패한 모듈 포함)을 건너 뛰고 install부모를 목표로합니다.
Jacek Prucia

@JacekPrucia pom 아티팩트도 설치해야한다는 것을 아는 것이 좋습니다 (부모가 pom 인 경우)
Adrian

@bzuillsmith 왜 mvn install부모 pom에서 실행해야합니까? 이 기능 만 사용하여 형제 종속성을 다운로드 할 수 있습니까? mvn installjar가 로컬 저장소에 있도록 형제 디렉토리로 이동하여 거기에서 실행 된 경우 동일한 결과를 얻지 못합니까?
user2158382

maven을 사용한 지 몇 년이 지났지 만, 예를 들어, 형제 종속성을 하나씩 설치할 수 있다고 생각합니다. 부모로부터 설치하면 작업이 줄어드는 경향이 있습니다 (입력 및 실행 명령이 적음). 모든 하위 프로젝트를 설치하지 않으려는 대규모 프로젝트의 경우 개별 프로젝트를 실행해야하는 경우가있을 수 있습니다.
bzuillsmith 17

ch-multip-spring \ simple-parent \ simple-model \ pom.xml과 같은 내 프로젝트는 루트 ch-multip-spring 폴더에서 mvn clean install을 수행합니다 (단순한 부모도 아닙니다). 비슷한 문제가 해결되었습니다. 게시물 제목에.
IcyBrk

104

IntelliJ IDEA와 동일한 문제가 있었으며 다음과 같이 작동했습니다.

  • 이동 File
  • 고르다 Settings
  • 고르다 Build, Execution, Deployments
  • Build Tools드롭 다운에서 선택
  • Maven드롭 다운에서 선택
  • Always update snapshots확인란을

IntelliJ 2017.2> 기본 설정 / 설정> 빌드, 실행, 배포> 빌드 도구> Maven> 스냅 샷 항상 업데이트 (확인란)의 스크린 샷


1
이것은 나를 위해 일했지만, 왜 그런지 이해하지 못합니다-명령 줄에서 빌드하려고했습니다. IntelliJ에서 캐시 된 것이 있습니까?
goodOldFashioned

나도 일 했어! 얼마나 실망 스러웠는지 믿을 수 없습니다. 감사!
Ben Arena

@ goodOldFashioned :이 "항상 업데이트"는 로컬 저장소에서 .... lastUpdated 파일을 덮어 썼습니다. -U는 명령 줄과 동일합니다. 그래서 intellij는 로컬 리포지토리를 수정 한 다음 명령 줄이 다시 작동했습니다.
Frischling

간단하고 효과적
Ojonugwa Jude Ochalifu

2
전체 인터넷을 검색 한 후 마침내 이것이 효과가
있었습니다

37

Eclipse를 사용하는 경우 프로젝트 -> Maven- > 프로젝트 업데이트를 마우스 오른쪽 단추로 클릭하십시오 . 메이븐 프로젝트 업데이트 대화 상자가 열립니다.

해당 대화 상자에서 Force Snapshots / Releases Update (스냅 샷 / 릴리스 강제 업데이트) 확인란을 선택하고 OK (확인)를 클릭 합니다. (아래 이미지 참조)

메이븐 프로젝트 업데이트 대화 상자

이것은 나를 위해 일했다!


36

이클립스를 사용하는 경우 프로젝트-> 속성-> Maven을 마우스 오른쪽 버튼으로 클릭 하고 " 작업 공간 프로젝트의 종속성 해결 "을 클릭하지 않았 는지 확인하십시오 .

도움이 되었기를 바랍니다.


4
그것은 나를 위해 작동합니다. 그러나 나는 왜 그런지 이해하지 못합니까? 이것 뒤에 어떤 설명이 있습니까?
Anand

1
이 초기 12 decencies이없는 한, 나를 위해 작동하지 않았다,이 일을 한 후 지금은 74
user2044822

27

대화가 늦었다는 것도 알고 있지만이 문제도있었습니다. 문제가 회사 방화벽이라고 생각합니다. 내 솔루션은 네트워크에서 분리하고 개방형 무선 장치에 연결 한 다음 Eclipse를 통해 강제로 업데이트하는 것이 었습니다. 이것은 모든 것을 해결했습니다.



1
고마워요! 그것은 나를 위해 일했고 많은 시간을 절약했습니다.
saidfagan

14

maven 빌드 명령 줄이 잘 작동하는 Eclipse와 동일한 문제가 있었지만 시도해보십시오.

  • .m2 / repository로 이동하여 연결된 디렉토리를 삭제하십시오.
  • 일식에서 업데이트 maven 종속성을 실행하십시오.

오류가 사라집니다 .... 왜 내 mvn 명령 줄이 그 디렉토리와 함께 작동하고 일식 .m2eclipse가 그럴 수 없었는지 전혀 알지 못하고 다소 짜증납니다. 내 프로젝트는 이제 일식에서 다시 작동하고 있습니다.


참고로, 우리는 gradle로 전환했습니다 .... 개미와 maven보다 훨씬 행복합니다 .... 매우 멋진 설정.
Dean Hiller

이클립스와 관련된 것이 확실하지 않습니다. 나는 IntelliJ와 같은 문제가 있었고 문제가있는 패키지를 삭제하고 다시 실행 mvn clean install했습니다
Jay

12

IntelliJ를 사용하여 동일한 문제가 발생했습니다. pom.xml> Maven> Reimport를 마우스 오른쪽 버튼으로 클릭하여 해결했습니다.


예, 인생은 그렇게 간단합니다. 어쨌든 @prime answer가 나를 위해 일했습니다.
Imam Bux

10

이 오류가 .jar 및 .pom 파일을 제외한 모든 것이 표시된 저장소 폴더에서 삭제 하여이 문제를 해결했습니다.


또한 maven 로컬 저장소에서 관련 파일을 삭제하고 전체 프로젝트를 업데이트하여 동일한 문제를 해결했습니다.
Ad Infinitum

8

"아티팩트 디스크립터를 읽지 못했습니다"문제는 일반적으로 maven 저장소에서 종속성의 pom 파일에 문제가 있음을 나타냅니다. pom 파일의 이름이 maven이 기대하는 이름과 같은지 다시 확인하고 pom 파일 내용이 유효한지 확인하는 것이 좋습니다.


1
pom.xml 확인이 유용했습니다. 동일한 종속성이 두 번 발견되었습니다 (복사 및 붙여 넣기 오류). 정리 후 모든 것이 잘되었습니다.
Adam Boczek

8

저에게는 "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 . 

6

나는 프로젝트가있다

 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에서 reuqired artifact를 다운로드했으며 클래스를 가져올 수 있습니다.

이제 문제가 시작됩니다 ... 나는 어떤 목적으로 b4의 소스 코드를 확인해야했고 이미 로컬 이클립스에서 B를 체크 아웃 했으므로 SVN에서 업데이트하고 모듈 b4를 체크 아웃했습니다. 또한 clean, package 등과 같은 대상으로 모듈 b4의 pom.xml을 실행했습니다. 코딩을 마치고 얼마 후 모듈 a2의 JAR을 작성해야했습니다. a2의 pom.xml과 BAM에서 "package"를 실행했습니다 !! a2 모듈에 대한 오류 n 오류.이 오류는 사용자에게 친숙하지 않았습니다. 확실한 것은 로그에 b4의 이름이 있다는 것입니다.

솔루션 : 여러 시간 동안 많은 솔루션을 시도한 후 B의 프로젝트 직접성 (예 : ../codebase/B)의 콘솔에서 "mvn -U clean install"을 실행했습니다. B가 상위이므로, b4를 포함한 모든 모듈에 대해 clean install 명령이 실행되었으며 성공적으로 실행되었습니다. 이 후 나는 부모 프로젝트 인 "mvn -U clean install"을 A로 실행했습니다. a2 모듈이 성공적으로 컴파일되고 설치되어 나중에 패키지됩니다.

여기서 중요한 점은 b4가 작업 공간에있는 경우 b4 만 설치하는 것이 아니라는 것입니다. 완전한 B를 새로 설치해야합니다. Zuill의 답변을 읽은 후이 솔루션을 찾았습니다.

편집 : 로컬 환경에서 B 프로젝트를 체크 아웃하지 않은 경우이 문제가 발생하지 않았을 수 있습니다. 나는 이것이 로컬 작업 공간에서 B를 체크 아웃했기 때문에 이런 일이 발생했다고 생각하는 경향이 있습니다.


5

당신은 두 개의 서로 다른 groupIds을 언급 com.morrislgn.merchandising.common하고 com.johnlewis.jec.webpim.common. 아마도 이것이 문제 일 것입니다.


좋은 자리-아니, 불행히도 아닙니다. POM XML에서 잘못된 태그를 복사했습니다.이 태그는 내가 필요한 태그보다 위에 있고 내가 한 일을 발견하지 못했습니다. 죄송합니다! 어리 석음을 수정하기 위해 질문을 편집했습니다!
Morrislgn


4

일식을 통해 업데이트 된 행운이 없었습니다. mvn clean install -U (모든 것을 해결했습니다)를 사용해야했습니다.


10
Gal Bracha도 이것에 대답했습니다. 작업 답변에 투표하고 필요한 경우 의견을 추가하는 것이 좋습니다.
Brian White

4

나를 위해, 그것은 실제로 의존성 POM에 문제가있는 것 같습니다.

jitpack 가상 저장소를 사용하여 문제를 해결했습니다.이 저장소에는 자체 POM 대신 URL을 기반으로 github 저장소를 포함시킬 수 있습니다 (제 경우에는 잘못된 것으로 보입니다).

    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>

3

나는 잠시 동안 같은 문제가 있었고 문제를 해결했지만 mvn -U clean install문제가 해결되지 않았습니다!

마침내 전체 .m2폴더 를 삭제하여 문제를 해결 한 다음 IDE를 다시 시작했는데 문제가 사라졌습니다!

따라서 때로는 로컬 maven 저장소의 일부 비 호환성 또는 문제로 인해 문제가 발생할 수 있습니다.


오프라인 상태에서 Maven 재 동기화를 시도하고 완전히 IntelliJ를 사용했습니다. 귀하의 조언을 따르고 .m2를 삭제하면 이제는 매력처럼 작동합니다! 감사!
Victor Grazi 2018 년

3

우리의 경우 멀티 모듈 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.teamcom.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종속성을 확인하십시오 .


2

프로젝트 폴더 내부의 쉘을 통해 탐색하고 다음 명령을 실행하십시오.

mvn -U clean install

일반적으로 이것은 이미 문제를 해결해야합니다.

다음과 같은 메시지가 표시되면

: war : 0.0.1-SNAPSHOT 프로젝트의 종속성을 해결할 수 없습니다 : com.sun.jersey : jersey-server : jar : 1.9에서 종속성을 수집하지 못했습니다.

그런 다음 다음을 실행하십시오.

export MAVEN_OPTS=-Dhttps.protocols=TLSv1,TLSv1.1,TLSv1.2

뒤에 :

mvn -U clean install

마지막으로 종속성을 업데이트하십시오.

그런 다음 깨끗한 메이븐 빌드를 수행하십시오.

maven clean install

1

나는 비슷한 문제가 있었다. 제 경우에는 .m2 / repositories 폴더의 testng 버전이 손상되었지만 삭제하고 다시 업데이트하면 모든 것이 잘 작동했습니다.


0

나는 일식 에서이 문제가 있었고 mvn -U clean install작동하지 않았지만 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Maven-> 프로젝트 업데이트를 선택하면 문제가 해결되었습니다 .


0

방금 Maven을 사용하여 STS Eclipse를 처음 사용하기 시작했습니다. 내가 설정 한 프로젝트에는 이미 자체 settings.xml이 있습니다. 이 경우 실행 구성에서 settings.xml 파일을 업데이트해야합니다.

  1. pom.xml을 마우스 오른쪽 단추로 클릭하고 "다음 계정으로 실행"-> "구성 실행 ..."

  2. "사용자 설정"이라고 표시된 곳에 파일 버튼을 클릭하고 settings.xml을 추가하십시오.

  3. 프로젝트에만 해당되는 것으로 생각되지만 "목표"가 "새로 설치"로 설정되어 있고 "건너 뛰기 테스트"를 확인했습니다.


0

이 오류는 기본적으로 maven이 로컬 저장소에서 특정 종속성을 읽을 수 없음을 나타냅니다. jar 파일이 올바르게 다운로드되지 않았기 때문에 발생할 수 있습니다. 따라서 maven 로컬 저장소로 이동하여 .lastUpdated 확장 파일 이 없는지 확인하십시오 .


0

이것은 나를 도왔다 :

IDE (내 경우에는 Red Hat CodeReady Studio)에서.

Windows->보기 표시-> 터미널-> 로컬 터미널 열기 / 추가

다음과 같이 명령을 실행하십시오.>

$ cd /pom-file-path/

$ mvn -U clean install


-4

maven setting.xml 및 저장소를 변경 하여이 문제를 해결했습니다.


그것은 빠르게 확대되었습니다 :)
Ad Infinitum
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.