Translate

[Gradle] 오프라인 환경에서의 Gradle 셋팅


실습 환경 : RedHat Linux Enterprise 8.6



증상

오프라인 환경에서 gradle 실행 시 아래와 같이 Gradle 파일을 다운로드 하지 못하며 수행이 정상적으로 되지 않는다.


[1004lucifer@rhel8 TestGradle]$ ls -al
total 28
drwxrwxr-x.  5 1004lucifer 1004lucifer  145 Jan 16 08:18 .
drwx------. 19 1004lucifer 1004lucifer 4096 Jan 16 08:21 ..
-rw-rw-r--.  1 1004lucifer 1004lucifer  297 Jan 16  2024 build.gradle
-rw-rw-r--.  1 1004lucifer 1004lucifer  539 Jan 16  2024 .gitignore
drwxrwxr-x.  3 1004lucifer 1004lucifer   21 Jan 16  2024 gradle
drwxrwxr-x.  5 1004lucifer 1004lucifer   56 Jan 16  2024 .gradle_bak
-rwxr-----.  1 1004lucifer 1004lucifer 8070 Jan 16  2024 gradlew
-rw-rw-r--.  1 1004lucifer 1004lucifer 2763 Jan 16  2024 gradlew.bat
-rw-rw-r--.  1 1004lucifer 1004lucifer   35 Jan 16  2024 settings.gradle
drwxrwxr-x.  4 1004lucifer 1004lucifer   30 Jan 16  2024 src
[1004lucifer@rhel8 TestGradle]$
[1004lucifer@rhel8 TestGradle]$ ./gradlew
Downloading https://services.gradle.org/distributions/gradle-8.2-bin.zip

Exception in thread "main" java.net.UnknownHostException: services.gradle.org
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:607)
        at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:288)
        at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
        at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:264)
        at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:367)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:203)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1162)
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1056)
        at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:189)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1572)
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1500)
        at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:268)
        at org.gradle.wrapper.Download.downloadInternal(Download.java:100)
        at org.gradle.wrapper.Download.download(Download.java:80)
        at org.gradle.wrapper.Install$1.call(Install.java:83)
        at org.gradle.wrapper.Install$1.call(Install.java:63)
        at org.gradle.wrapper.ExclusiveFileAccessManager.access(ExclusiveFileAccessManager.java:69)
        at org.gradle.wrapper.Install.createDist(Install.java:63)
        at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:107)
        at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:63)
[1004lucifer@rhel8 TestGradle]$
[1004lucifer@rhel8 TestGradle]$


offline, 1004lucifer


GRADLE_USER_HOME 확인

GRADLE_USER_HOME 환경변수를 따로 지정하지 않은경우 ~/.gradle 디렉토리가 기본으로 지정이 된다.

디렉토리가 없는경우 ./gradlew 를 한번 수행하면 해당 디렉토리가 자동으로 생성된다.

GRADLE_USER_HOME/wrapper/dists 디렉토리 확인 시 Gradle에 셋팅된 버전의 디렉토리명이 있다.


[1004lucifer@rhel8 dists]$
[1004lucifer@rhel8 dists]$ pwd
/home/1004lucifer/.gradle/wrapper/dists
[1004lucifer@rhel8 dists]$
[1004lucifer@rhel8 dists]$ ll
total 0
drwxrwxr-x. 3 1004lucifer 1004lucifer 39 Jan 16 08:21 gradle-8.2-bin
[1004lucifer@rhel8 dists]$
[1004lucifer@rhel8 dists]$ cd gradle-8.2-bin/
[1004lucifer@rhel8 gradle-8.2-bin]$
[1004lucifer@rhel8 gradle-8.2-bin]$ ls -al
total 0
drwxrwxr-x. 3 1004lucifer 1004lucifer 39 Jan 16 08:21 .
drwxrwxr-x. 3 1004lucifer 1004lucifer 28 Jan 16 08:21 ..
drwxrwxr-x. 2 1004lucifer 1004lucifer 67 Jan 16 08:21 bbg7u40eoinfdyxsxr3z4i7ta
[1004lucifer@rhel8 gradle-8.2-bin]$
[1004lucifer@rhel8 gradle-8.2-bin]$ cd bbg7u40eoinfdyxsxr3z4i7ta/
[1004lucifer@rhel8 bbg7u40eoinfdyxsxr3z4i7ta]$
[1004lucifer@rhel8 bbg7u40eoinfdyxsxr3z4i7ta]$ ls -al
total 0
drwxrwxr-x. 2 1004lucifer 1004lucifer 67 Jan 16 08:21 .
drwxrwxr-x. 3 1004lucifer 1004lucifer 39 Jan 16 08:21 ..
-rw-rw-r--. 1 1004lucifer 1004lucifer  0 Jan 16 08:21 gradle-8.2-bin.zip.lck
-rw-rw-r--. 1 1004lucifer 1004lucifer  0 Jan 16 08:21 gradle-8.2-bin.zip.part
[1004lucifer@rhel8 bbg7u40eoinfdyxsxr3z4i7ta]$
[1004lucifer@rhel8 bbg7u40eoinfdyxsxr3z4i7ta]$





GRADLE_USER_HOME 에 Gradle 파일 추가

https://services.gradle.org/distributions/gradle-8.2-bin.zip 에서 다운로드 받은 파일을 해당 디렉토리에 추가한다.
(Gradle 버전에 따라 다운로드 URL과 디렉토리명이 다르다.)


[1004lucifer@rhel8 bbg7u40eoinfdyxsxr3z4i7ta]$
[1004lucifer@rhel8 bbg7u40eoinfdyxsxr3z4i7ta]$ mv ~/gradle-8.2-bin.zip ./
[1004lucifer@rhel8 bbg7u40eoinfdyxsxr3z4i7ta]$
[1004lucifer@rhel8 bbg7u40eoinfdyxsxr3z4i7ta]$ ll
total 125676
-rw-rw-r--. 1 1004lucifer 1004lucifer 128689645 Jan 16 08:18 gradle-8.2-bin.zip
-rw-rw-r--. 1 1004lucifer 1004lucifer         0 Jan 16 08:21 gradle-8.2-bin.zip.lck
-rw-rw-r--. 1 1004lucifer 1004lucifer         0 Jan 16 09:09 gradle-8.2-bin.zip.part
[1004lucifer@rhel8 bbg7u40eoinfdyxsxr3z4i7ta]$




Gradle 정상 수행 여부 확인


[1004lucifer@rhel8 TestGradle]$
[1004lucifer@rhel8 TestGradle]$ ./gradlew

> Task :help

Welcome to Gradle 8.2.

To run a build, run gradlew <task> ...

To see a list of available tasks, run gradlew tasks

To see more detail about a task, run gradlew help --task <task>

To see a list of command-line options, run gradlew --help

For more detail on using Gradle, see https://docs.gradle.org/8.2/userguide/command_line_interface.html

For troubleshooting, visit https://help.gradle.org

BUILD SUCCESSFUL in 2s
1 actionable task: 1 executed
[1004lucifer@rhel8 TestGradle]$
[1004lucifer@rhel8 TestGradle]$




PS.

gradle-wrapper.properties 파일의 distributionUrl 값을 로컬에 있는 gradle-8.2-bin.zip 파일의 경로를 잡아주는 방법이 있는데..

gradle-wrapper.properties 파일 자체도 Git에 관리가 되는 소스의 일부이다보니 되도록 해당 파일을 수정하지 않는 방향으로 기술했다.

distributionUrl 값을 변경하고 gradlew 를 수행한경우 GRADLE_USER_HOME/wrapper/dists/{Gradle_Version}/ 디렉토리 하위에 값이 다른 디렉토리가 생성이 된다.
distributionUrl 값에 따라서 Gradle 수행 zip 파일의 위치가 달라지며 distributionUrl 값을 다시 원복 시 정상적으로 수행이 되지 않는 증상이 발생한다.



참조

https://smdroid.tistory.com/8
https://docs.gradle.org/current/dsl/org.gradle.api.tasks.wrapper.Wrapper.html


댓글