그레들Gradle에는 래퍼Wrapper라고 하는 운영체제에 맞춰서 그레들 빌드를 수행하도록 하는 배치 스크립트가 있다.
이 배치스크립트는 프로젝트 내에 숨김속성을 가지고 있는 gradle-wrapper.jar 를 이용해서

project
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle

운영체제에 적절한 배치 스크립트를 실행하도록 한다.

  • 윈도우: gradlew.bat
    > gradlew.bat [task]
    
  • 리눅스 및 OSX: gradlew
    $ ./gradlew [task]
    

프로젝트의 성격에 맞춰 사용할 래퍼의 버전을 변경할 수 있도록 별도의 태스크Task를 작성실행할 수 있다.
프로젝트에 위치한 build.gradle 파일의 마지막 부분에 다음과 같이 wrapper 태스크를 추가한 후,

ext {
    gradleVersion= '2.1' //자신이 원하는 Gradle 버전에 맞춰 변경
}

//...중략

task wrapper(type: Wrapper) {
    gradleVersion = "$gradleVersion"
}

wrapper 태스크를 실행하면 된다.

$ gradle wrapper

● 참고


윈도우에서 그레들을 실행해본 적이 없어서(;;) 몰랐던 문제가 이번에 발생을 했다. 인코딩 문제…
다양한 개발환경을 가진 팀이 개발을 할떄도 신경써야 하는 부분이기도 하다. 이클립스의 파일 인코딩을
‘UTF-8’로 바꿨을 때도 이와 유사한 상황이 벌어지지 않을까 하는 생각이 들지만… 그건 그때 가서
살펴보도록 한다.

그레들이 실행될 때, 운영체제의 시스템설정들이 그대로 적용된다. 유닉스나 리눅스에서는 UTF-8로 인코딩이
유지가 되니까 별 무리가 없지만, 윈도우는 MS949 인코딩 처리가 되기에 문제가 발생했다.

발생한 문제는 다음과 같다.

발생문제

클래스 컴파일 시 한글주석을 넣은 클래스들에서 아래의 메시지를 뿌리며 컴파일이 진행되지 않았다.

  • error: unmappable character for encoding MS949
  • error: unclosed string literal

아무런 옵션없이 gradle을 실행하면 다음과 같이 encoding 관련한 오류가 발생을 한다.

C:\Users\ihoneymon\workspace\rocking-the-rest-api\src\main\java\kr\pe\ihoney\jco
\restapi\web\support\converter\AbstractEntityConverter.java:16: error: unmappabl
e character for encoding MS949
 * JPA Entity ?대옒??蹂?솚???꾪븳 異붿긽?대옒??
                      ^
C:\Users\ihoneymon\workspace\rocking-the-rest-api\src\main\java\kr\pe\ihoney\jco
\restapi\web\support\converter\AbstractEntityConverter.java:16: error: unmappabl
e character for encoding MS949
 * JPA Entity ?대옒??蹂?솚???꾪븳 異붿긽?대옒??
                       ^
C:\Users\ihoneymon\workspace\rocking-the-rest-api\src\main\java\kr\pe\ihoney\jco
\restapi\web\support\converter\AbstractEntityConverter.java:16: error: unmappabl
e character for encoding MS949
 * JPA Entity ?대옒??蹂?솚???꾪븳 異붿긽?대옒??
                        ^
C:\Users\ihoneymon\workspace\rocking-the-rest-api\src\main\java\kr\pe\ihoney\jco
\restapi\service\impl\CommunityServiceImpl.java:39: error: unclosed string liter
al
        Member manager = memberService.save(new Member(community.getName() + "
愿?━??, community, community.getCreatedBy()));
                                                                             ^
C:\Users\ihoneymon\workspace\rocking-the-rest-api\src\main\java\kr\pe\ihoney\jco
\restapi\service\impl\CommunityServiceImpl.java:39: error: ')' expected
        Member manager = memberService.save(new Member(community.getName() + "
愿?━??, community, community.getCreatedBy()));

                                            ^
2 errors
:generateQueryDSL FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':generateQueryDSL'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.

BUILD FAILED

Total time: 6.63 secs

ihoneymon@IHONEYMON-VIRPC ~/workspace/rocking-the-rest-api (master)
$


윈도우에서는 기본적으로 MS949 을 사용하고 있는데, UTF-8로 작성한 소스코드를 가져와 컴파일하면 위와 같은 문제가 발생한다.

해결방법

gradle을 실행할 때 기본적으로 줄 수 있는 옵션에 file.encoding 을 추가하는 것이다. 윈도우 시스템설정-환경변수에서

GRADLE_OPTS=-Dfile.encoding=UTF-8

을 추가하면 된다.

환경변수 설정을 하고 배쉬나 커맨드라인을 닫고 재실행하여 진행하면 적용된다.

  1. 2014.10.21 15:32

    비밀댓글입니다

    • 죄송합니다.
      @_@);; 이미 네이버 블로그를 가지고 계신데, 굳이 티스토리
      블로그를 만들려고 하시는 것에 도움을 드리기는 어렵습니다.

  2. 덕분에 문제 해결하고 갑니다! ㅎㅎ

그레들gradle(http://www.gradle.org/)에 대해서 발표했던 것이 작년이었다. 그 후 그레들은 마구마구 버전업을 하더니 2.1 버전이 나오는 상황에 이르렀다. 그러나 여전히 국내에는 그레들보다는 메이븐이 강세를 이루고 있고 그레들에 관련된 글도 많이 부족한 상황이다. 그레들이 가지고 있는 강점들이 우리나라에서는 쉽게 부각되지 못하고 있는 점이 참 아쉽다.


그레들에 대한 관심을 키워가면서 그레들에 대한 내용들을 정리해보고자 한다.

위키로 해야할지 어떻게 해야할지 고민중이지만...ㅎ 고민은 적게하고 빨리 진행해야지.



메이븐을 활용하고 있는 자바프로젝트들이라면 그레들로 이동하는 것이 쉽지 않을까? 몇몇 특수한 상황에서 문제들이 생긴다고 하지만, 그 외의 대부분의 경우는 별 문제가 없지 않을까? 그런 생각을 잠시 해본다.

그레들 지원 플러그인을 설치했었다.

이클립스에는 그레들 에디터gradle editor가 설치되어 있지 않기 때문에, 아래 그림에서 보는 것처럼 '*.gradle'  파일을 열면 아래 텍스트로 열려서 어떤 형태로 구성되어 있는지 파악하기가 어렵다. 천성이 게으르다. 

이걸 어떻게 하면 색상을 적용해서 손쉽게 볼 수 있을까? 자동완성을 지원하게 할 수 있을까? 

하는 궁리를 하다가 문득 gradle editor를 본 기억이 났다.


아래 그림에서 보는 것처럼 Eclipse에서 'File Associations''*.gradle'이 적용되어 있지 않기에, build.gradle 등의 .gradle 확장자를 가진 파일을 열어도 일반 텍스트 에디터로 연결된다. 

이클립스에서 [Help -> Eclipse Marketplace...]를 선택한다. 'Find' 항목에 'gradle'이라고 입력하면, 아래 그림에서 보는 것처럼 'Minimalist Gradle Editor 0.10.0' 을 찾아볼 수 있을 것이다. [Install] 버튼을 누르고 설치를 진행한다.

설치 후에 다시 이클립스의 'File Associations'를 살펴보면 '*.gradle' 확장자와 그에 해당하는 'Associate Editors:' 항목에 추가된 것을 볼 수 있다.

다시 build.gradle을 열어보면 editor에 의해서 문법강조가 적용되어 있는 것을 볼 수 있다. 그리고 자동완성 기능도 지원된다. +_+)b 이클립스에서도 편하게 그레들 파일을 수정하자. 굿럭.


  1. 진경철 2017.07.09 13:37 신고

    영 신경 쓰여서 짜증났었는데 이렇게 좋은 정보 알려주셔서 너무너무 감사합니다!
    즐프하세요~

+ Recent posts