[Gradle] Copy and Use dependencies to other pc on offline
[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
시킨다.
- Gradle을 offline 모드로 설정.
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
'로 정했다고 가정하고 예를 들면 다음과 같다
'원본PC'에서 '
C:\\Gradle\\.gradle
' 과 같이C 드라이브
루트에 폴더를 하나 만들고 의존성파일을 Cache한다. (사용자 경로가 아닌 경로를 사용하자!
) (※offline 모드가 OFF
상태에서 시행)IntelliJ 사용시)
- Settings > Build, Execution, Deployment > Build Tools > Gradle 에서
Gradle user home
을C:\\Gradle\\.gradle
으로 설정하고 reload 한다.
- Settings > Build, Execution, Deployment > Build Tools > Gradle 에서
Command Line 사용시)
gradle --gradle-user-home C:\\Gradle\\.gradle
OR
gradle -g C:\\Gradle\\.gradle
지정한 경로('C:\Gradle\.gradle')에 여러 파일들이 만들어진다.
'다른PC'에
원본PC
의 경로('C:\\Gradle\\.gradle
')와 똑같은 경로에 복사하여 붙여넣는다.'다른PC'에서 작업시에
gradle-user-home
옵션을 항상 설정하여 사용한다. (+ offline 모드 ON`)IntelliJ 사용시
- Settings > Build, Execution, Deployment > Build Tools > Gradle 에서
Gradle user home
을C:\\Gradle\\.gradle
으로 설정한 후 사용한다.
- Settings > Build, Execution, Deployment > Build Tools > Gradle 에서
Command Line 사용시
- gradle 명령어 사용시
-g C:\\Gradle\\.gradle
옵션을 항상 붙여서 사용한다.gradle clean bootRun -g C:\\Gradle\\.gradle --offline
- gradle 명령어 사용시
3. Reference - 참조
- Copying the Gradle cache to another machine: https://discuss.gradle.org/t/copying-the-gradle-cache-to-another-machine/7546/15
- Gradle Goodness: Change Local Build Cache Directory: https://blog.mrhaki.com/2017/04/gradle-goodness-change-local-build.html
- Gradle Document - Build Environment > Gradle properties: https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties
- gradle.user.home - set in gradle.properties, build.gradle, or settings.gradle to a project-relative location?: https://stackoverflow.com/questions/56350799/gradle-user-home-set-in-gradle-properties-build-gradle-or-settings-gradle-to