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.