Maven을 사용하여 릴리스 종속성을 강제로 다시 다운로드


135

X가 의존하는 프로젝트를 진행하고 있습니다. X는 Y에 의존합니다.

프로젝트의 폼폼에 Y를 명시 적으로 포함 시켰습니다. 그러나 그것은 사용되지 않고 물건을 더 깨끗하게하기 위해 대신 X의 pom에 종속성으로 추가했습니다. X는 릴리스 종속성으로 표시됩니다.

문제는 프로젝트의 pom에서 Y를 제거하고 X의 pom에 추가 한 후에 프로젝트가 선택하지 않는다는 것입니다 mvn -U clean package. -U 업데이트 스냅 샷은 알고 있지만 릴리스는 아닙니다.

따라서 ~ / .m2 / repository 디렉토리를 삭제하지 않고 어떻게 X의 pom을 다시 다운로드 할 수 있습니까? 또한 달리기를 시도했지만 작동 dependency:purge-local-repository하지 않았습니다.


질문을 "maven-2"로 태그했습니다. 이 문제를 해결하기 위해 -U 옵션이 Maven 3에 추가되었습니다. 업그레이드를 제안합니다.
Mark O'Connor

방법론적인 관점에서 볼 때, Xpom 을 변경 하면 패치 번호 만 변경 되더라도 새로운 릴리스를 구성해야합니다 1.3.-> 1.3.1. 따라서이 문제를 해결해야합니다.
jpaugh

그러나 여전히 스냅 샷과 비슷한 문제가 발생할 수 있으므로 일부 답변을 얻는 것이 좋습니다.
jpaugh

답변:


165

Maven을 다시 다운로드하여 종속성을 만들 수는 없지만 대신 할 수있는 일은 잘못 다운로드 한 종속성을 제거하는 것입니다. mvn dependency:purge-local-repository

참조 : http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html


11
같은 종류가 아닌가?
Svish

2
빌드 작업 만 구성하는 경우 (예 : CI 시스템) 파일 시스템에 액세스 할 필요가 없습니다.
Oliver Drotbohm

2
여러 프로젝트가 실행 mvn dependency:purge-local-repository clean package되면 한 프로젝트가 다른 프로젝트가 컴파일을 실행하는 동안 로컬 저장소에서 동일한 종속성을 삭제 할 수 있습니다. 피하는 방법?
vikyd

55

방금 ~ / .m2 / repository를 삭제했으며 다시 다운로드해야했습니다.)


1
마지막 수단으로 도움이되는 이클립스와 maven이 약간 "혼란 된"프로젝트가있었습니다. .m2 폴더를 삭제하면 프로젝트가 컴파일되고 올바르게 실행됩니다.
레오나르도

5
리포지토리 내부에서 새로 고쳐야하는 종속성을 선택적으로 삭제할 수도 있습니다. 원하는 경우 수동 제거.
jpaugh

41

다음 명령이 도움이 될 것입니다!


mvn -U clean install

4
질문에서 Maven사용하여 종속성을 해제 하십시오. 아니요, 이것은 더 나은 의견 일 수 있습니다.
Naman

31

Ali Tokmen의 답변에 감사드립니다. 다음 명령을 사용하여 특정 로컬 종속성을 강제로 삭제했습니다.

mvn dependency:purge-local-repository -DmanualInclude=com.skyfish:utils

이를 통해 utils.m2 / repository에서 제거 되고 utils실행할 때 항상 JAR 종속성을 다시 다운로드합니다 mvn clean install.


1
maven이 종속성을 다시 다운로드하도록 강제하는 방법이 필요했습니다. 이것은 실제로 그렇게하는 유일한 대답이지만 다른 대답은 모든 것을 제거하는 것이 좋습니다. 감사합니다
smac89

14

프로젝트를 마우스 오른쪽 버튼으로 클릭-> Maven-> 프로젝트 업데이트하고 스크린 샷과 같이 확인란을 선택하십시오. 그것은뿐만 아니라 릴리스를 업데이트합니다 :)

여기에 이미지 설명을 입력하십시오


5
그들이 "/ 릴리스"부분을 어떻게 구현했는지 아는 것이 좋을 것입니다.
Ulises Layera

내가 필요한 것에 감사드립니다.
JamesG

12
mvn clean install -U

-U는 종속성의 강제 업데이트를 의미합니다.

정리 또는 -U없이 단일 종속성을 업데이트하려는 경우 로컬 저장소에서 제거하고 빌드 할 수 있습니다.


다시, 이것은 SNAPSHOT 종속성 만 다시 다운로드합니다.
Zardoz89

6

X에 추가 할 때 X의 버전 번호 (예 : X-1.2)를 증가시켜야합니다.
그러면 X-1.2가 설치 / 배포되고 X에 대한 프로젝트 종속성을 새 버전 X-1.2에 종속되도록 변경해야합니다


6

당신의 그룹 ID를 알고 있다면 X, 당신은 모두를 다시 다운로드하려면이 명령을 사용할 수 X있으며 종속성을의

mvn clean dependency:purge-local-repository -DresolutionFuzziness=org.id.of.x

사용 제안 다른 답변과 같은 작업을 수행 dependency:purge-local-repository하지만 관련된 모든 항목을 삭제하고 다시 다운로드합니다 X.


4

모든 종속성을 강제로 다운로드하려면 전체 maven 저장소를 다시 초기화하십시오. 에서와 같이 이 문서 에 이미 설명, 당신은 사용할 수 있습니다 :

mvn -Dmaven.repo.local=$HOME/.my/other/repository clean install

3

삭제 된 jar 파일을 강제로 다시 다운로드 할 때 유효하지 않은 LOC가 오는 ~ / .m2 / repository ..... / actual_path를 삭제하십시오. 전체 저장소 폴더 를 삭제하지 말고 오류가 발생한 특정 폴더를 삭제하십시오.


0

삭제하면 ~/.m2/repository문제가 해결됩니다. 그러나 여전히 오래된 것을 유지 해야하는 경우 ~/.m2/repositorymaven 로컬 경로를 일시적으로 변경할 수 있습니다.

IntelliJ에서 작업하는 경우 Maven Settings로 이동하여 Local Repository 경로를 다른 곳으로 변경하십시오. 근처의 재정의 확인란을 선택해야 할 수도 있습니다.

여기에 이미지 설명을 입력하십시오


-1

위에 제공된 대부분의 답변으로 문제를 해결할 수 있습니다.

그러나 IntelliJ를 사용하고 자동으로 수정하려면 Maven 설정으로 이동하십시오.

빌드, 실행, 배포-> 빌드 도구-> Maven

여기에 이미지 설명을 입력하십시오

오프라인 작업 비활성화

항상 스냅 샷 업데이트 활성화 (필요한 경우 전환)


1
공감대에있는 이유를 공유 할 수 있다면 감사하겠습니다. 감사합니다.
Abhishek Nandgaonkar

1
아마도 스냅 샷이 릴리스가 아니기 때문에 문제가 해결되지 않습니다.
soru

-2

빌드 경로로 이동하십시오 ... 기존 maven 라이브러리 삭제 u 추가됨 ... 라이브러리 추가 ... maven 관리 종속성 클릭 ... maven 프로젝트 설정 클릭 ... maven 종속성 확인 확인란을 선택하십시오. 메이븐 의존성


2
이것은 일부 IDE를 사용한다고 가정하고 (질문에서 지원하지 않는 가정), 어떤 IDE도 지정하지 않았습니다!
Phil
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.