TOOL/BUILDER 2021. 4. 12. 09:28

[Gradle] Copy and Use dependencies to other pc on offline

(오프라인 환경의 다른 컴퓨터에 의존성 복사하여 사용하기)

저는 Java + Spring + Gradle로 Solution 제품을 개발하고 있습니다.

간혹 흔히들 사용하는 인터넷이 되지 않는 폐쇄망 환경에서 개발을 해야하는 또는 개발하게 해야하는 상황이 발생합니다. (혹은 내부망)

Gradle은 기본적으로 의존성파일들을 Online으로 매번 확인합니다,

  • Offline에서도 빌드를 해야할 때는 ???

  • 인터넷이 되지 않는 다른 PC로 옴겨서 사용하고 싶을 때는 ???

1. Offline

--offline 옵션으로 Offline(인터넷에 연결되지 않은)상태에서도 Cache된(이미 한번 확인하고 임시보관한) 의존성파일들을 사용하도록 할 수 있습니다.

그렇지만 먼저 Online 모드로 의존성파일들을 가져와 Cache가 선행된 후에야 가능합니다.

그 의존성파일들은 기본적으로 사용자경로(User Home)의 .gradle에 저장됩니다. (~/.gradle)

  • Windows 예)

      C:\\Users\\USER_NAME\\.gradle
  • 다음과 같이 기존에 사용했던 의존성파일들을 인터넷 없이 사용할 수 있다.

    • IntelliJ 사용시)

      • Gradle을 offline 모드로 설정.
        • 방법A: 오른쪽 Gradle Tab에서 Offline모드 Icon을 찾아서 클릭!
        • 방법B: [SHIFT] 연속 2번 후, 'Toggle Gradle Offline Mode' 로 검색하여 ON 시킨다.
    • Command Line 사용시)

        gradle clean bootRun --offline

2. Offline + Other PC (다른 PC)

그렇다면 인터넷이 되지 않는 다른PC에 옴겨서 작업을 하고 싶다면 어떻게 해야할까?

2-1. 상황)

자 '원본PC'(Online), '다른PC'(Offline) 가 있다고 가정하자.

인터넷이 연결되지 않은 Offline상태의 '다른PC'에서도

'원본PC'에서 사용했던 의존성파일들을 그대로 사용하고 싶은 욕구가 뿜뿜한다면??

2-2. 문제)

각 프로젝트에서 사용자가 Gradle에 정의한 의존성 항목들(Dependencies)에 관련된 파일들은

일반적으로 ~/.gradle 예를 들어 'C:\Users\someone\.gradle' 과 같이 사용자 경로의 .gradle이라는 폴더에 저장된다.

그런데!! 이 '.gradle'을 복사하여 다른PC의 사용자경로(User Home)에 적용해보면 적용되지 않는다. (의존성파일들을 찾지 못한다.)

침묵이 흐르고..

"아하!!" 하는 감탄사와 함께 User명을 똑같이 해서 경로를 같이 맞춰봤자 gradle은 의존성파일들을 찾지 못한다고만 투덜댄다..

2-3. 해결)

원본PC에서 gradle-user-home 옵션을 사용자 경로가 아닌 경로로 변경하여 저장 후 해당 폴더를 복사하여

다른PC에서도 똑같은 경로에 붙여넣고 같은 경로로 gradle-user-home 옵션을 설정하여 사용한다.

사용자경로가 아닌 경로를 'C:\\Gradle\\.gradle'로 정했다고 가정하고 예를 들면 다음과 같다

  1. '원본PC'에서 'C:\\Gradle\\.gradle' 과 같이 C 드라이브 루트에 폴더를 하나 만들고 의존성파일을 Cache한다. (사용자 경로가 아닌 경로를 사용하자!) (※ offline 모드가 OFF 상태에서 시행)

    • IntelliJ 사용시)

      • Settings > Build, Execution, Deployment > Build Tools > Gradle 에서 Gradle user homeC:\\Gradle\\.gradle 으로 설정하고 reload 한다.
    • Command Line 사용시)

        gradle --gradle-user-home C:\\Gradle\\.gradle

      OR

        gradle -g C:\\Gradle\\.gradle
  2. 지정한 경로('C:\Gradle\.gradle')에 여러 파일들이 만들어진다.

  3. '다른PC'에 원본PC의 경로('C:\\Gradle\\.gradle')와 똑같은 경로에 복사하여 붙여넣는다.

  4. '다른PC'에서 작업시에 gradle-user-home 옵션을 항상 설정하여 사용한다. (+ offline 모드 ON`)

    • IntelliJ 사용시

      • Settings > Build, Execution, Deployment > Build Tools > Gradle 에서 Gradle user homeC:\\Gradle\\.gradle 으로 설정한 후 사용한다.
    • Command Line 사용시

      • gradle 명령어 사용시 -g C:\\Gradle\\.gradle 옵션을 항상 붙여서 사용한다.
          gradle clean bootRun -g C:\\Gradle\\.gradle --offline

3. Reference - 참조

'TOOL > BUILDER' 카테고리의 다른 글

[Babel] Javascript - Async Transform  (0) 2018.12.18
[Gradle] gradle wrapper  (0) 2017.09.13
[Gulp] uglify toplevel  (0) 2016.04.13
[Gulp] gulp-shell 걸프에서도 쉘스크립트가 가능하다.  (0) 2016.02.09
[Gulp] 시작하기 - 버전 3  (0) 2016.01.17