::: Zany's Homepage ::: Zany Wiki | 사이트 통합 검색
 
 
 

[gradle] gradle wrapper 를 사용하여 빌드 환경 맞추기

게시판
JAVA
작성자
Zany
작성일
2017-12-01 14:49:07
읽은수
213
평점
   
표시옵션
HTML사용 | 자동BR태그 | 공백문자허용 | 가운데정렬 | 고정폭글꼴 | 자동URL링크 | 마우스선택
gradle wrapper 를 사용하는 목적은,
빌드하는 사용자마다 같은 버전의 빌딩 도구를 사용하도록 유도하여
누가 어디서 빌드를 하든 손쉽게 같은 결과가 나오도록 하는 것이다.
(심지어 gradle 빌드 도구를 설치하지 않은 사용자라 할 지라도...)
gradle v3.1 기준으로 빌드 스크립트가 작성된 프로젝트가 있고,
이 프로젝트 소스를 여러 명의 사용자에게 배포하려고 한다.

A 란 사용자는 gradle v4.3.1 버전을 OS 에 설치해놨고,
B 란 사용자는 gradle v2.14 버전을 OS 에 설치해놨을 때

A 와 B 가 이 프로젝트 소스를 빌드했을 때 서로 다른 버전의 빌드 도구를 사용하여 빌드하기 때문에
원치 않은 빌드 결과물이 나오거나 아예 빌드를 못하는 상황이 발생할 수도 있을 것이다.

이러한 문제를 해결하기 위해 프로젝트의 build.gradle 파일에 아래 구문을 추가해 놓고,
프로젝트 루트 디렉토리에서 gradle wrapper 명령을 수행하면,
프로젝트에 아래와 같은 gradle wrapper 관련 파일이 추가 될 것이다.

● gradle wrapper 명령 수행 전
[zany@dione test-project]$ ls -al
total 88
-rw-r--r--  1 zany  staff  2539 12  1 14:03 build.gradle
-rw-r--r--  1 zany  staff   290 12  1 14:31 gradle.properties
-rw-r--r--  1 zany  staff   808 11 28 13:00 test-project.iml
-rw-r--r--  1 zany  staff  3824 11 28 11:17 test-project.ipr
-rw-r--r--  1 zany  staff  9299 11 28 11:17 test-project.iws
-rw-r--r--  1 zany  staff     0 11 28 11:17 settings.gradle
drwxr-xr-x  3 zany  staff    96 11 21 10:42 src/
● gradle wrapper 명령 수행
  build.gradle 파일 wrapper task 에 추가된 설정을
  cli argument (--gradle-version) 로 오버라이드 할 수 있다.
gradle wrapper
gradle wrapper --gradle-version 2.0
[zany@dione test-project]$ gradle wrapper

BUILD SUCCESSFUL in 0s
1 actionable task: 1 executed
● gradle wrapper 명령 수행 후,
  gradle wrapper 관련 파일과 디렉토리가 추가되었음을 알 수 있다.
  이 파일이 추가된 채로 형상 관리 (SVN, GIT...) 시스템에 프로젝트를 등록한다.
  (물론 intellij idea 나 eclipse 의 메타 파일들은 빼고...)

[PROJECTHOME] -|- gradle
               |  |--- wrapper
               |       |--- gradle-wrapper.jar
               |       |--- gradle-wrapper.properties
               |- gradlew
               |- gradlew.bat
[zany@dione test-project]$ ls -al
total 112
-rw-r--r--  1 zany  staff  2539 12  1 14:03 build.gradle
drwxr-xr-x  3 zany  staff    96 12  1 14:32 gradle/
-rw-r--r--  1 zany  staff   290 12  1 14:31 gradle.properties
-rwxr-xr-x  1 zany  staff  5296 12  1 14:32 gradlew*
-rw-r--r--  1 zany  staff  2260 12  1 14:32 gradlew.bat
-rw-r--r--  1 zany  staff   808 11 28 13:00 test-project.iml
-rw-r--r--  1 zany  staff  3824 11 28 11:17 test-project.ipr
-rw-r--r--  1 zany  staff  9299 11 28 11:17 test-project.iws
-rw-r--r--  1 zany  staff     0 11 28 11:17 settings.gradle
drwxr-xr-x  3 zany  staff    96 11 21 10:42 src/
이제 A, B 사용자는 이 프로젝트를 내려받아
Unix/Linux 계열 OS 라면 "gradlew" 명령을 이용하고,
Windows 계열 OS 라면 "gradlew.bat" 명령을 이용하여 프로젝트를 빌드할 수 있을 것이다.

gradle 버전은 gradlew 스크립트가 알아서 지정한 버전을 다운로드 받아 맞춰주기 때문에
A, B 사용자 모두 자신의 OS 에 어떤 gradle 버전을 설치하였더라도 프로젝트에 선언된 2.0 버전의
gradle 로 빌드가 될 것이다.

gradlew 스크립트는 gradle 명령과 동일하게 사용하며 된다.
(gradle 명령의 커맨드 라인 인자를 그대로 쓸 수 있다는 얘기다)
● 다른 시스템(컴퓨터)에서 이 프로젝트를 내려받아 확인해보자.
  - 예제에 사용된 컴퓨터는 hermes 라는 시스템이고, gradle v4.3.1 만 설치되어 있으며 PATH 에 등록되어 있다.

● PATH 에 등록된 gradle 명령으로 버전 확인 결과 4.3.1 로 확인된다.
[zany@hermes ~]$ gradle --version

------------------------------------------------------------
Gradle 4.3.1
------------------------------------------------------------

Build time:   2017-11-08 08:59:45 UTC
Revision:     e4f4804807ef7c2829da51877861ff06e07e006d

Groovy:       2.4.12
Ant:          Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM:          1.8.0_151 (Oracle Corporation 25.151-b12)
OS:           Linux 2.6.32-696.13.2.el6.x86_64 amd64
● 앞서 gradle wrapper 작업을 통해 프로젝트에 포함된
  [PROJECTHOME]/gradlew 명령을 사용하여 버전을 확인해보면 의도한 바와 같이 v2.0 으로 표시된다.
[zany@hermes test-project]$ ./gradlew --version

------------------------------------------------------------
Gradle 2.0
------------------------------------------------------------

Build time:   2014-07-01 07:45:34 UTC
Build number: none
Revision:     b6ead6fa452dfdadec484059191eb641d817226c

Groovy:       2.3.3
Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM:          1.8.0_151 (Oracle Corporation 25.151-b12)
OS:           Linux 2.6.32-696.13.2.el6.x86_64 amd64
만약 어떤 프로젝트를 내려받았고, 그 프로젝트에 gradlew 스크립트가 있는데
실행해보니 Could not find or load main class org.gradle.wrapper.GradleWrapperMain 에러가 떨어진다면
[PROJECTHOME] -|- gradle
               |  |--- wrapper
               |       |--- gradle-wrapper.jar          [1]
               |       |--- gradle-wrapper.properties   [2]
               |- gradlew                               [3]
               |- gradlew.bat                           [4]
원 제작자가 gradle wrapper 는 구성하였으나 [1], [2] 또는 ./gradle 디렉토리 자체를 올리지 않은 것이다.
이럴 때는 그냥 가뿐하게 gradle 을 다운로드 받아서 설치한 담에 (걍 압축만 풀면 됨)
이 문제의 프로젝트 루트 디렉토리에 가서 gradle wrapper 명령만 한 번 때려주자.

게시물이 도움이 되셨으면 +1 을 눌러주세요~
 게시판 글 목록
No Subject Poster Hits Posted
14282 Zany 52 2018-04-05 10:47:10
14281 Zany 66 2018-04-05 10:31:07
14237 Zany 221 2017-12-01 15:18:39
Zany 213 2017-12-01 14:49:07
14232 Zany 293 2017-11-22 17:56:06
14230 Zany 159 2017-11-21 17:26:51
14229 Zany 255 2017-11-20 09:48:13
14192 Zany 734 2017-08-21 12:26:24
14122 Zany 442 2017-06-27 15:11:55
댓글 달기 - 이 글이 도움이 되었거나 흥미로우셨다면, 댓글을 남겨주세요.(^^)(oo)(__)
작성자
                       
 
zany.kr
  Copyright ⓒ 2002-2010 Zany's Programming Lab. All Rights Not Reserved.
temporary This Page loads on 0.047 Secs