최근 Apache Maven에 캐싱 문제가있는 것 같습니다. Windows Vista 또는 Windows 7을 사용하여 프로젝트에서 새로 설치를 수행하면 최신 아티팩트 파일이 업데이트 된 경우에도 이전 빌드와 동일한 데이터로 아티팩트가 생성되는 경우가 있습니다.
maven이 빌드해야 할 로컬 아티팩트의 클린 빌드를 항상 트리거하도록이 캐시를 지우는 방법이 있습니까?
특히 war 플러그인으로 webapp을 빌드하는 데 문제가 있습니다. 메이븐 버전은 3.0.3입니다. 전쟁 플러그인 버전은 2.1.1입니다.
답변
아티팩트 (또는 전체 로컬 저장소)를 c:\Users\<username>\.m2\repository
직접 삭제하십시오 .
답변
로컬 캐시를 정리하려면 종속성 플러그인을 사용하십시오.
mvn dependency:purge-local-repository
: 이것은 로컬 저장소 파일을 삭제하려는 시도이지만 항목이 제거 된 후에는 항상 로컬 저장소를 채우고 채 웁니다.mvn dependency:purge-local-repository -DreResolve=false
: 이렇게하면 종속성이 다시 해결되지 않지만 때때로 네트워크로 이동하는 것 같습니다.mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false
: 이것은 Paweł Prażak에 의해 추가되었으며 잘 작동하는 것 같습니다. 로컬 저장소를 비우려면 세 번째를 사용하고 로컬 저장소를 버리고 종속성을 다시 얻으려면 첫 번째를 사용하십시오.
답변
당신은 / 체크 변경 updatePolicy의 당신에 저장소에 대한 설정을 settings.xml
.
이 요소는 업데이트 발생 빈도를 지정합니다. Maven은 리포지토리의 maven-metadata 파일에 저장된 로컬 POM의 타임 스탬프를 원격과 비교합니다. 항상, 매일 (기본값), 간격 : X (여기서 X는 분 단위의 정수) 또는 없음 중에서 선택할 수 있습니다.
로 설정해보십시오 always
.
답변
나는 다음을 할 것이다 :
mvn dependency:purge-local-repository -DactTransitively=false -DreResolve=false --fail-at-end
플래그는 maven에게 종속성을 해결하거나 네트워크에 충돌하지 않도록 지시합니다. 로컬로 보이는 것을 삭제하십시오.
그리고 좋은 측정을 위해서는 --fail-at-end
끝까지 오류 ( )를 무시 하십시오. 이것은 다소 엉망인 종속성 세트가 있거나 다소 엉망인 내부 저장소에 의존하는 프로젝트에 유용합니다 (발생합니다).
답변
이것은 Spring Tool Suite v 3.1.0.RELEASE에서 작동하지만 Eclipse에서도 사용할 수 있다고 생각합니다.
/username/.m2
디렉토리 에서 아티팩트를 수동으로 삭제 한 후 (위의 palacsint로 표시됨) 다음을 수행하여 파일의 색인을 다시 작성하십시오.
이동 :
Windows->Preferences->Maven->User Settings
메뉴.
텍스트 상자 Reindex
옆 의 버튼을 클릭하십시오 Local Repository
. “적용”을 클릭 한 다음 “확인”을 클릭하면 완료됩니다.
답변
일부 답변에서 지적했듯이 때로는 로컬 저장소를 완전히 삭제 하려고합니다. 예를 들어 더 이상 pom에서 참조하지 않으므로 제거 할 수없는 아티팩트가있을 수 있습니다.
예 clean
를 들어이 삭제를 Maven 단계에 포함 시키려면 다음 maven-clean-plugin
과 같이 설정을 통해 저장소에 액세스하고 액세스 할 수 있습니다 .
<plugin>
<inherited>false</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>clean</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Base clean is attached to deleting local maven cache</echo>
<echo>${settings.localRepository}</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<inherited>false</inherited>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<filesets>
<fileset>
<directory>${settings.localRepository}</directory>
</fileset>
</filesets>
</configuration>
</plugin>
답변
mvn dependency:purge-local-repository -DactTransitively=false -Dskip=true
maven 플러그인을 모듈 중 하나로 사용하는 경우 사용하십시오 . 그렇지 않으면 Maven은 다시 컴파일하려고 시도하여 종속성을 다시 다운로드합니다.