[maven] Apache Maven의 캐시를 지우려면 어떻게합니까?

최근 Apache Maven에 캐싱 문제가있는 것 같습니다. Windows Vista 또는 Windows 7을 사용하여 프로젝트에서 새로 설치를 수행하면 최신 아티팩트 파일이 업데이트 된 경우에도 이전 빌드와 동일한 데이터로 아티팩트가 생성되는 경우가 있습니다.

maven이 빌드해야 할 로컬 아티팩트의 클린 빌드를 항상 트리거하도록이 캐시를 지우는 방법이 있습니까?

특히 war 플러그인으로 webapp을 빌드하는 데 문제가 있습니다. 메이븐 버전은 3.0.3입니다. 전쟁 플러그인 버전은 2.1.1입니다.



답변

아티팩트 (또는 전체 로컬 저장소)를 c:\Users\<username>\.m2\repository직접 삭제하십시오 .


답변

로컬 캐시를 정리하려면 종속성 플러그인을 사용하십시오.

  1. mvn dependency:purge-local-repository: 이것은 로컬 저장소 파일을 삭제하려는 시도이지만 항목이 제거 된 후에는 항상 로컬 저장소를 채우고 채 웁니다.
  2. mvn dependency:purge-local-repository -DreResolve=false: 이렇게하면 종속성이 다시 해결되지 않지만 때때로 네트워크로 이동하는 것 같습니다.
  3. 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=truemaven 플러그인을 모듈 중 하나로 사용하는 경우 사용하십시오 . 그렇지 않으면 Maven은 다시 컴파일하려고 시도하여 종속성을 다시 다운로드합니다.