install : install-file로 추가 된 로컬 Maven 저장소에서 jar 파일을 제거하는 방법은 무엇입니까?


122
mvn install:install-file -Dfile=phonegap-1.1.0.jar -DgroupId?=phonegap -DartifactId?=phonegap -Dversion=1.1.0 -Dpackaging=jar

위의 명령을 사용하여 로컬 jar를 maven 로컬 저장소에 설치합니다. 이제 maven repo에서 종속성을 얻었습니다. 이것을 로컬 저장소에서 제거하고 싶습니다. 그것을 청소하는 방법?


답변:


107

이를 위해 실행할 수있는 maven 명령이 있지만 저장소에서 수동으로 파일을 삭제하는 것이 더 쉽습니다.

Windows Documents and Settings\your username\.m2또는 $HOME/.m2Linux 에서 이와 같이


10
나는 .m2/repository directory. 동료가 이전에 .m2 디렉토리를 삭제했는데 프로젝트에서 settings.xml파일 을 수정해야하므로 문제가 발생 합니다.
— Tiris

7
.m2/repository디렉토리를 삭제하면 모든 Maven 플러그인 파일도 삭제됩니다. purge-local-repository명령을 사용하면 종속성 만 삭제됩니다.
— collinhaines

3
아래의 디렉터리 구조 .m2/repository는 Maven 그룹 ID로 구성되어 있으므로 제거하려는 아티팩트에 해당하는 하위 디렉터리 만 삭제할 수 있습니다.
— Kevin Krumwiede

124

파일 삭제는 수동으로 작동하지만 로컬 (캐시) 저장소에서 프로젝트의 종속성을 제거 하고 선택적으로 원격 저장소에서 다시 해결 하는 공식적인 방법이 있습니다.

purge-local-repository표준 Maven 종속성 플러그인 의 목표 는 캐시 에서이 프로젝트 의 로컬로 설치된 종속성 을 제거합니다 . 선택적으로 원격 저장소에서 동시에 다시 해결할 수 있습니다.

포함하는 프로젝트의 종속성에 적용되므로 프로젝트 단계의 일부로 사용해야합니다 . 또한 전 이적 종속성도 기본적으로 제거됩니다 (로컬로).

캐시에서 단일 아티팩트를 명시 적으로 제거 purge-local-repository하려면 manualInclude매개 변수 와 함께 사용 하십시오 . 예를 들어, 명령 줄에서 :

mvn dependency:purge-local-repository -DmanualInclude="groupId:artifactId, ..."

문서는 이것이 기본적으로 전이 종속성을 제거하지 않는다는 것을 의미합니다. 비표준 캐시 위치로 실행하거나 여러 플랫폼에서 실행하는 경우 "직접"파일을 삭제하는 것보다 더 안정적입니다.

전체 문서는 maven-dependency-plugin 사양에 있습니다.

참고 : 이전 버전의 maven dependency플러그인에는 manual-purge-local-repository목표가 있었으며 현재 (버전 2.8) manualInclude. 에 대한 문서 manualIncludes(와 함께 s)도 읽어야합니다.


나는 이것이 .jarmaven central 또는 다른 저장소에서 다운로드되지 않은 s에 대해 작동한다고 생각하지 않습니다 . 이 명령을 실행하면 .jar자동으로 다운로드 된 모든 s 가 제거 되지만 .jar수동으로 설치 한 s에 도달하면 다음 오류 메시지가 출력됩니다. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.8:purge-local-repository (default-cli) on project alloy-generator: Failed to refresh project dependencies for: myartifact: required artifacts missing: [ERROR] manually-downloaded-and-installed.jar ...
— stiemannkj1

3
실제로 확인한 후을 제거한다는 것을 깨달았 .jar지만 여전히 오류가 출력됩니다. 그래서 위해 .jar받는다는 같이 몇 가지 이상한 파일을 생성하기 때문에 수동으로 설치 한 S, I는 삭제하는 대신이 방법을 사용하여 수동으로 추천 yourjar.jar.lastUpdated하고 yourjar.pom.lastUpdated수동 어쨌든 삭제해야 할 수있다. 그러나 maven이 모든 종속성을 자동으로 관리하는 경우 종속성을 제거하는 좋은 방법입니다.
— stiemannkj1

이 접근 방식에는 명령을 실행하기 위해 Maven 프로젝트도 필요합니다. OP가 Gradle 빌드와 관련하여 지정한 설치 명령을 실행하면 작동하지 않는 것 같습니다.
— jdonmoyer

19

적어도 현재 Maven 버전에서는 다시 다운로드하지 않고 로컬 리포지토리에서 종속성을 제거하려는 경우 -DreResolve = false 스위치를 추가해야합니다.

mvn dependency:purge-local-repository -DreResolve=false

다시 다운로드하지 않고 종속성을 제거합니다.



12

~/.m2/repository/phonegap/1.1.0/Linux OS를 사용하는 경우 로컬 디렉토리 아래의 모든 항목 (jar, pom.xml 등)을 삭제하십시오 .


그런 식으로 항아리를 제거하면 이전 폴더에서 항아리를 "다시 다운로드"합니다. 제거해야하는 참조도있을 수 있습니다.
— Antonio Sesto 2014

0

나는 같은 문제에 직면했고 위의 모든 제안을했지만 아무것도 작동하지 않았습니다. 마지막으로 .m2와 .ivy 폴더를 모두 삭제했으며 저에게 효과적이었습니다.


-5
  1. cd ~/.m2
  2. git init
  3. git commit -am "some comments"
  4. cd /path/to/your/project
  5. mvn install
  6. cd ~/.m2
  7. git reset --hard

4
이 답변은 문제를 해결하거나 해결하지 못할 수 있지만 답변에 설명을 추가하는 것은 어떻습니까? 이것은 OP가 그에게 보여 주려는 것을 이해하는 데 도움이 될 수 있습니다.
— Gerhard

2
이 응답은 문제와 관련이 없습니다. .m2 폴더에 git 저장소 설정을 표시하고 git 저장소로 재설정합니다.
— lquitadamo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.