때때로 maven은 로컬로 빌드되고 패키지 된 특정 종속성을 종속성으로 갖는 다른 프로젝트를 빌드하는 동안 로컬 저장소에서 찾을 수 없다고 불평합니다. 다음과 같은 오류가 발생합니다.
프로젝트 X에서 목표를 실행하지 못함 : 프로젝트 X에 대한 종속성을 해결할 수 없음 : [아카이브 저장소]에서 Y를 찾지 못해 로컬 저장소에 캐시되었습니다. 내부 업데이트 간격이 경과하거나 업데이트가 강제 실행될 때까지 해결을 다시 시도하지 않습니다. >
X는 빌드중인 프로젝트이고 Y는 누락 된 것으로 추정되는 아티팩트입니다. 로컬 저장소를 보면 아티팩트가 있습니다. 이 아티팩트는 우리의 archiva 저장소에 설치되지 않으므로 문제는 순전히 로컬 저장소에 있습니다.
settings.xml과 “mvn -U”에서 다양한 프로파일을 시도했습니다. 이 아티팩트는 로컬 저장소보다 더 멀리 가지 않기 때문에 좋은 일도해서는 안됩니다.
작동하는 것처럼 보이는 유일한 두 가지는 maven이 스마트해질 때까지 매우 오래 기다리거나 로컬 저장소를 완전히 삭제하는 것입니다. 아마도 대기 옵션은 앞서 언급 한 업데이트 간격과 관련이 있습니다.
우리는 maven 3.0.2 및 3.0.3에서이 문제를 경험했습니다. 우리는 Archiva 1.0.3을 사용하고 있습니다 (하지만 이것이 요인이되어서는 안됩니다). 어떤 도움이라도 대단히 감사하겠습니다.
답변
로컬 Maven 저장소는 아티팩트 디렉토리에있는 “_maven.repositories”라는 파일을 사용하여 아티팩트가 원래 어디에서 왔는지 추적합니다. 제거한 후 빌드가 작동했습니다. 이 답변 으로 문제가 해결되었습니다.
답변
여기에있는 옵션이 작동하지 않았기 때문에 해결 방법을 공유하고 있습니다.
내 프로젝트에는 많은 하위 모듈이있는 상위 프로젝트 (자체 pom.xml 포함)가 있으며 그 중 하나는 (A) 다른 하위 모듈 (B)에 대한 종속성이 있습니다. mvn package
A에서 시도했을 때 B가 해결되지 않았기 때문에 작동하지 않았습니다.
mvn install
상위 디렉토리에서 실행 하면 작업이 수행되었습니다. 그 후, mvn package
A 내부에서 할 수 있고 B를 찾을 수 있습니다.
답변
오프라인 모드에서도 Maven은 종속성에 대한 _remote.repositories 마커가 있으면 원격 저장소를 확인합니다. 오프라인 모드에서 작업해야하는 경우 이러한 파일을 삭제해야 할 수 있습니다.
아래의 간단한 셸 명령은 이러한 마커 파일을 삭제합니다. 기기에 오프라인 모드 만 사용하는 경우 안전합니다. 웹에서 파일을 가져와야하는 컴퓨터에서는이 작업을 수행하지 않습니다.
웹에서 연결이 끊긴 빌드 서버에서이 전략을 사용했습니다. 저장소를 여기로 전송하고 마커 파일을 삭제 한 다음 오프라인 모드에서 실행해야합니다.
Linux / Unix에서는 다음과 같은 방법으로 원격 저장소 마커 파일을 삭제할 수 있습니다.
cd ~/.m2
find . -name "_remote.repositories" -type f -delete
답변
이런 일이 발생했을 때 템플릿에서 내 settings.xml을 맹목적으로 복사했는데 여전히 빈 <localRepository/>
요소 가 있었기 때문 입니다. 이는 종속성을 해결할 때 사용되는 로컬 저장소가 없음을 의미합니다 (설치된 아티팩트는 여전히 기본 위치에 저장 됨). 내가 그것을 교체했을 때 <localRepository>${user.home}\.m2\repository</localRepository>
작동하기 시작했습니다.
* nix의 경우 <localRepository>${user.home}/.m2/repository</localRepository>
라고 생각합니다.
답변
Maven은 무언가를 찾지 못했을 때를 기억합니다. 핵심은 “내부 업데이트 간격이 경과하거나 업데이트가 강제 실행될 때까지 해결이 다시 시도되지 않습니다.->”입니다.
빠른 해결책은 문제를 해결했다고 가정하고 문제 아티팩트에 대한 로컬 “저장소”하위 디렉토리를 삭제하는 것입니다. 🙂
mvn -U
원격 저장소에서 업데이트를 강제합니다-다시 말하지만, 이제 원격으로 해당 아티팩트를 채웠다 고 가정합니다.
답변
모두 잡아라. 여기에 언급 된 솔루션이 작동하지 않으면 (제 경우에 발생) ‘.m2’폴더 / 디렉터리에서 모든 콘텐츠를 삭제하고 mvn clean install
.
답변
<repositories/>
pom.xml에 정의한 경우 분명히 로컬 저장소가 무시됩니다.