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.