Gradle 설정

개발자 | 2015. 7. 17. 08:52

'JAVA_HOME' needs to point to a JDK installation, not a JRE. On Windows this should be something likeC:\Program Files\Java\jdk1.8.0.


시스템 변수 > 

JAVA_HOME > C:\Program Files\Java\jdk1.7.0_67

GRADLE_HOME > C:\gradle-2.4



Gradle을 생성할 프로젝트 Root에서 작업 (build.gradle  없을때)

gradle init --type java-library


환경변수와 시스템변수의 차이점

환경변수는 크게 사용자변수와 시스템변수로 나뉩니다.

사용자변수 = 다수의 사용자계정에 대해선 아실거라 생각하고, 사용자 변수는 그 사용자의 계정내에서만 적용되는 변수입니다. 

즉, 해당 사용자 계정으로 컴퓨터 로그온시에만 적용되는 변수이죠. 함수로 따지면 일종의 지역변수랄까요?

시스템변수 = 시스템변수는 시스템전반에 걸쳐 적용되는 변수입니다. 즉, 다른 계정으로도 해당 변수를 사용할 수 있는것이죠.


간단한 예를들면,

JAVA_HOME설정이 사용자1 변수에 있다면,

사용자1로 로그온시,

cmd 입력란에 javac , java 명령어를 사용할 수 있음.

사용자2로 로그온시,

cmd 입력란에 javac, java 명령어를 사용할 수 없음.

사용자3로 로그온시,

cmd 입력란에 javac, java 명령어를 사용할 수 없음.


JAVA_HOME설정이 시스템 변수에 있다면,

사용자1로 로그온시,

cmd 입력란에 javac , java 명령어를 사용할 수 있음.

사용자2로 로그온시,

cmd 입력란에 javac, java 명령어를 사용할 수 있음.

사용자3로 로그온시,

cmd 입력란에 javac, java 명령어를 사용할 수 있음.




1. targetCompatibility, sourceCompatibility의 설정
: 사용된 java version을 설정한다. 기본값은 1.5다

2. repositories의 설정
: repository를 설정한다. repository는 Maven에서 사용되던 것과 동일하며 Local PC에 maven이 설치된 경우, 
LocalPC에 대한 maven repository를 먼저 찾아보도록 설정하는 것이 가능하다. maven 설정은 다음과 같이 구성한다. 


repositories {
    mavenLocal()              //Local PC maven repository
    mavenCentral()           //mavenrepository site를 참조   
}

3. dependencies의 설정
: dependency를 설정한다. dependency의 경우에는 maven에 비하여 간결한 format을 지원한다.

dependencies {

     compile 'org.slf4j:slf4j-api:1.7.5'
     testCompile "junit:junit:4.11"
     providedCompile 'javax.servlet:servlet-api:3.1'
     providedRuntime 'webcontainer:logging:1.0'
}


* compile : compile시에 필요한 dependency를 설정한다.

* testCompile : test 시에 필아한 dependency를 설정한다. 

* providedCompile : compile시에는 필요하지만, 배포시에는 제외될 dependency를 설정한다. (war plugin이 설정된 경우에만 사용 가능하다)

* providedRuntime : runtime시에만 필요하고, 실행환경에서 제공되는 dependency를 설정한다. (war plugin이 설정된 경우에만 사용 가능하다)


4. gradle build sequence

* compileJava : java compile

* processResources : resources로 지정된 file 처리 - jar를 만들기 위해 build folder로 copy등의 절차를 취한다

* classes : classes directory를 구성한다. compileJava를 통해 compile된 class객체와 resource들을 취합한다.

* jar : 모인 파일들을 이용해서 jar를 구성한다.

* compileTestJava : test code를 구성한다.

* processTestResources : test resources를 구성한다.

* testClasses : 앞 두과정을 통해서 모여진 파일들을 처리한다.

* test : testClass를 실행해서 JUnit/TextNG 결과를 도출시킨다.



Gradle에 디펜던시는 build.gradle 파일에 다음과 같이 추가할 수 있다.


dependencies {

    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'

    compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.3'

    testCompile group: 'junit', name: 'junit', version: '4.+'

}

이클립스 (Eclipse)에서 메이븐 (Maven) 디펜던시를 추가하면 바로 Maven Dependencies 항목에 나타나는 것처럼


Gradle Dependencies 항목에 나타날 것을 기대했다면 당황할 수 있다.


다음과 같이 해야만 Gradel Dependencies 항목에 나타난다.


Gradle -> Refresh Dependences




@에러 메시지
Cannot find System Java Compiler. Ensure that you have installed a JDK (not just a JRE) and configured your JAVA_HOME system variable to point to the according directory.
Could not execute build using Gradle distribution 'http://services.gradle.org/distributions/gradle-1.10-bin.zip'.

JAVA_HOME 환경변수(이미 셋팅돼있을테고) 와 관련없음. 


@ 해결책
Eclipse에서
Window -> Preferences -> Gradle -> Arguments

1. Workspace JRE
2. Configure JREs
3. ADD - Standard VM4. JDK 추가
4. 추가한 JDK를 선택 (JRE 선택하면 안됨)




,