[gradle] gradle이 종속성을 다시 다운로드하도록하려면 어떻게해야합니까?

리포지토리에서 종속성을 다시 다운로드하도록 gradle에 지시하는 방법은 무엇입니까?



답변

일반적으로 명령 줄 옵션 –refresh-dependencies 를 사용하여 캐시의 종속성을 새로 고칠 수 있습니다 . 에서 캐시 된 파일을 삭제할 수도 있습니다 ~/.gradle/caches. 다음 빌드에서 Gradle은 다시 다운로드를 시도합니다.

특정 사용 사례는 무엇입니까? 동적 종속성 버전 또는 SNAPSHOT 버전을 사용합니까?


Unix 시스템에서 Gradle이 다음을 사용하여 다운로드 한 모든 기존 아티팩트 (아티팩트 및 메타 데이터)를 삭제할 수 있습니다.

rm -rf $HOME/.gradle/caches/


답변

최신 버전의 Gradle을 사용하는 경우 –refresh-dependencies 옵션을 사용할 수 있습니다.

./gradlew build --refresh-dependencies

Gradle 매뉴얼을 참조하십시오 .

–refresh-dependencies 옵션은 Gradle에게 해결 된 모듈 및 아티팩트에 대한 모든 캐시 된 항목을 무시하도록 지시합니다. 동적 버전이 다시 계산되고 모듈이 새로 고쳐지고 아티팩트가 다운로드 된 모든 구성된 리포지토리에 대해 새로운 해결이 수행됩니다.


답변

종속성을 ‘변경’으로 플래그 지정하여 빌드 스크립트에서 일부 종속성을 다시 다운로드하도록 Gradle에 지시 할 수 있습니다. 그런 다음 Gradle은 24 시간마다 업데이트를 확인하지만 resolutionStrategy DSL을 사용하여 구성 할 수 있습니다. SNAPSHOT 또는 NIGHTLY 빌드에 이것을 사용하는 것이 유용하다는 것을 알았습니다.

configurations.all {
    // Check for updates every build
    resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}

넓히는:

dependencies {
    implementation group: "group", name: "projectA", version: "1.1-SNAPSHOT", changing: true
}

응축 :

implementation('group:projectA:1.1-SNAPSHOT') { changing = true }

포럼 스레드 에서이 솔루션을 찾았습니다 .


답변

MAC의 경우

./gradlew build --refresh-dependencies

Windows의 경우

gradlew build --refresh-dependencies

시도해 볼 수도 있습니다 gradlew assembleDevelopmentDebug --refresh-dependencies


답변

Windows의 경우 … gradle을 다시 다운로드하여 특정 종속성 을 만들려면

  1. 아래 디렉토리에서 다시 다운로드하려는 종속성을 삭제하십시오.

    C:\Users\%USERNAME%\.gradle\caches\modules-2\files-2.1
    
  2. 경로에서 모든 메타 데이터 디렉토리를 삭제하십시오 .

    C:\Users\%USERNAME%\.gradle\caches\modules-2\metadata-*
    
  3. 프로젝트의 루트 디렉토리에서 실행하십시오 gradle build(또는 gradlew buildgradle wrapper를 사용하는 경우).

참고 : 위 파일 경로의 숫자는 다를 수 있습니다.


답변

캐시 된 항아리가있는 폴더를 제거 할 수 있습니다.

제 경우에는 Mac 에서 라이브러리가 경로에 캐시되었습니다.

/Users/MY_NAME/.gradle/caches/modules-2/files-2.1/cached-library-to-remove

캐시 된 라이브러리 폴더 (위의 예제에서 “cached-library-to-remove”)를 제거하고 프로젝트의 빌드 폴더를 삭제하고 다시 컴파일했습니다. 신선한 도서관은 그때 다운로드되었습니다.


답변

여기에 제시된 답변과 같이 전체 gradle 캐시를 제거하는 대신 특정 그룹 또는 이슈 ID에 대한 캐시를 삭제할 수 있습니다. 내 기능에 다음 기능을 추가했습니다 .bash_profile.

deleteGradleCache() {
  local id=$1
  if [ -z "$id" ]; then
    echo "Please provide an group or artifact id to delete"
    return 1
  fi
  find ~/.gradle/caches/ -type d -name "$id" -prune -exec rm -rf "{}" \; -print
}

용법:

$ deleteGradleCache com.android.support

그런 다음 다음 빌드 또는 재 동기화하면 gradle이 종속성을 다시 다운로드합니다.