티스토리 뷰
반응형
- wrapper가 포함된 gradle 프로젝트가 있다고 가정하자.
- 새로운 터미널(이하 A) 열어 해당 gradle 프로젝트로 이동한 후 gradle/wrapper/gradle-wrapper.properties를 확인하면,
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.2-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
- 의 형태와 같다. 없으면 gradle wrapper를 실행하자.
- gradle wrapper는 실행시 distributionUrl에 명시된 버전이 있으면 사용하고, 없으면 다운로드 받는다.
- 실행 가능한 바이너리 형태로 다운로드 받고, gradle wrapper는 이를 실행한다. 때문에, 설치 과정이 없는 것처럼 보인다.
- 바이너리를 다운로드 받는 위치는 distributionBase+distributionPath라고 하고, 이 때 GRADLE_USER_HOME은 기본적으로 ~/.gradle이라고 함.
- 근데 GRADLE_USER_HOME이 환경 변수는 아닌 것 같다. 어디에 있는지를 못찾았음.
- 새로운 터미널(이하 B)을 열고 내 gradle 버전을 확인한 후, 다운로드 위치인 ~/.gradle/wrapper/dists로 가보자.
[~] gradle -version | grep Gradle
Gradle 7.1.1
[~] cd .gradle/wrapper/dists
[dists] ls
[dists]
- 현재 내 gradle은 7.1.1버전이며, 이는 distributionUrl에 명시된 버전인 6.8.2와 다르다.
또한, ~/.gradle/wrapper/dists에도 아무 것도 없다. - A에서 ./gradlew -version을 2번 실행해보자.
[gradle_test] ./gradlew -version
Downloading https://services.gradle.org/distributions/gradle-6.8.2-bin.zip
..........10%..........20%..........30%...........40%..........50%..........60%..........70%...........80%..........90%..........100%
------------------------------------------------------------
Gradle 6.8.2
------------------------------------------------------------
Build time: 2021-02-05 12:53:00 UTC
Revision: b9bd4a5c6026ac52f690eaf2829ee26563cad426
Kotlin: 1.4.20
Groovy: 2.5.12
Ant: Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM: 14.0.1 (Oracle Corporation 14.0.1+7)
OS: Mac OS X 10.16 x86_64
[gradle_test] ./gradlew -version
------------------------------------------------------------
Gradle 6.8.2
------------------------------------------------------------
Build time: 2021-02-05 12:53:00 UTC
Revision: b9bd4a5c6026ac52f690eaf2829ee26563cad426
Kotlin: 1.4.20
Groovy: 2.5.12
Ant: Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM: 14.0.1 (Oracle Corporation 14.0.1+7)
OS: Mac OS X 10.16 x86_64
[gradle_test]
- 첫 실행시에는 distributionUrl을 통해 다운로드 받는 과정이 포함된다.
- 반면, 두번째 실행시에는 다운로드 과정이 생략된다. B에서 ls를 통해 다운로드 여부를 확인하자.
[dists] ls
gradle-6.8.2-bin
[dists] cd gradle-6.8.2-bin
[gradle-6.8.2-bin] ls
5nlkemqlnno2amj7d1mfn69bt
[gradle-6.8.2-bin] cd 5nlkemqlnno2amj7d1mfn69bt
[5nlkemqlnno2amj7d1mfn69bt] ls
gradle-6.8.2 gradle-6.8.2-bin.zip.lck
gradle-6.8.2-bin.zip gradle-6.8.2-bin.zip.ok
[5nlkemqlnno2amj7d1mfn69bt] cd gradle-6.8.2
[gradle-6.8.2] ls
LICENSE NOTICE README bin init.d lib
[gradle-6.8.2] cd bin
[bin] ls
gradle gradle.bat
[bin]
- 6.8.2 gradle이 다운로드 되었으므로, bin 디렉토리에는 gradle 바이너리가 존재한다. 다음과 같이 실행해보자.
[bin] gradle -version | grep Gradle
Gradle 7.1.1
[bin] ./gradle -version | grep Gradle
Gradle 6.8.2
[bin]
- 첫 번째 실행은 내가 설치한 gradle을 실행한 결과이다.
- 두 번째 실행은 wrapper 동작 과정에서 다운로드 받은 바이너리를 통해 실행한 결과이다.
- gradle은 여러 개발자의 협업시 빌드 환경을 동일하게 맞춰주는 장점이 있다.
- 위의 예시를 예로 들면, 내 gradle 버전은 7.1.1이지만 실제 프로젝트에서는 6.8.2를 사용하는 경우가 된다.
- 이 경우 gradlew를 통해 clean, build 등을 사용하면 협업시 동일한 빌드 환경을 가져갈 수 있다.
- 극단적으로, gradle을 설치하지 않은 개발자더라도 java만 있다면 gradle wrapper를 통한 빌드가 가능할 것. 확인은 안해봤다.
'Dev.' 카테고리의 다른 글
[HTTP] 코드 401 403 차이 (짧) (2) | 2021.07.27 |
---|---|
[REST] REST API 참고용 글 모음집 (0) | 2021.07.27 |
[Git] 리포지토리에 push 하기 (0) | 2021.07.17 |
[Redis] docker redis 간단 사용 및 mac redis 설치 (1) | 2021.05.26 |
[Spring Boot] LOG_PATH_IS_UNDEFINED 폴더가 생성되는 문제 (0) | 2021.05.24 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Node.js
- javascript
- dev
- mysql
- spring boot
- Docker
- kotlin
- AWS IoT
- Gradle
- postgresql
- Java
- etc
- Vault
- Database
- jQuery
- IntelliJ
- Linux
- Puppeteer
- react
- shell
- AWS
- JEST
- Spring Cloud Config
- eureka
- terraform
- hashicorp
- 코딩테스트
- pgloader
- JPA
- Git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함