Groovy 플러그인은 Gradle Java Plugin를 상속하고 Groovy 프로젝트 지원을 추가한 것이다. Groovy 단독 혹은 Groovy/Java 혼합 프로젝트를 지원한다. Java 단독도 가능하다. Java와 Groovy간의 접합(Joint) 컴파일을 지원한다.
build.gradle
apply plugin: 'groovy'
태스크 이름 | 의존성 | 타입 | 설명 |
---|---|---|---|
compileGroovy | compileJava | GroovyCompile | groovyc로 그루비 소스 컴파일 |
compileTestGroovy | compileTestJava | GroovyCompile | groovyc로 그루티 테스트 소스 컴파일 |
compile소스셋Groovy | compile소스셋Java | GroovyCompile | 주어진 소스셋 컴파일 |
groovydoc | - | GroovyDoc | groovydoc으로 Groovy API 문서 생성 |
Groovy 플러그인은 기존 Java 플러그인의 태스크에 다른 의존성을 추가한다.
태스크 이름 | 의존성 |
---|---|
classes | compileGroovy |
testClasses | compileTestGroovy |
소스셋Classes | compile소스셋Groovy |
Groovy 소스 디렉토리에는 groovy와 java 소스코드가 올 수 있다. Java 소스 디렉토리에는 java 소스 코드만 올 수 있다. 아래 목록의 디렉토리가 꼭 있을 필요는 없다.
Java 플러그인의 디렉토리는 생략한다.
디렉토리 | 의미 |
---|---|
src/main/groovy | 운영 Groovy 소스. 접합 컴파일용 Java 소스도 올 수 있다. |
src/test/groovy | 테스트 Groovy 소스. 접합 컴파일용 Java 소스도 올 수 있다. |
src/소스셋/groovy | 소스셋의 Groovy 소스. 접합 컴파일용 Java 소스도 올 수 있다. |
sourceSets { main { groovy { srcDir 'src/groovy' // 운영 Groovy 소스 디렉토리를 추가한다.(기존값에 더하는 것임) } } }
srcDir
은 SourceDirectorySet.srcDir() 메소드이다.
groovy
라는 의존성 구성이 추가된다.
groovyc
와 groovydoc
은 지정된 버전의 것을 사용하게 된다.build.gradle
repositories { mavenCentral() } dependencies { groovy group: 'org.codehaus.groovy', name: 'groovy', version: '1.7.10' // groovy 구성에 추가한다. }
lib
디렉토리에 groovy JAR들을 둔 상태일 경우 의존성 구성 build.gradle
repositories { flatDir { dirs 'lib' } } dependencies { groovy module(':groovy:1.6.0') { dependency('asm:asm-all:2.2.3') dependency('antlr:antlr:2.7.7') dependency('commons-cli:commons-cli:1.2') module(':ant:1.7.0') { dependencies(':ant-junit:1.7.0:jar', ':ant-launcher:1.7.0') } } }
Groovy 플러그인은 소스셋에 다음 프라퍼티들을 추가한다.
GroovySourceSet 타입이 선언한 프라퍼티들이다.
프라퍼티 이름 | 타입 | 기본값 | 설명 |
---|---|---|---|
groovy | SourceDirectorySet (read-only) | not null | 이 소스셋의 Groovy 소스 파일. 모든 *.groovy와 *.java를 포함하며 다른 것들은 제외시킨다. |
groovy.srcDirs | Set<File> Gradle 파일 다루기 참조 | [projectDir/src/name/groovy] | 이 소스셋의 Groovy 소스를 포함하는 디렉토리 목록. Java 소스도 있을 수 있다.]] |
allGroovy | FileTree (read-only) | not null | 이 소스셋의 모든 Groovy 파일. 오직 .groovy 파일만 포함한다. |
Groovy 플러그인은 몇몇 소스셋 프라퍼티들을 수정한다.
프라퍼티 이름 | 변경사항 |
---|---|
allJava | Groovy 소스 디렉토리의 모든 *.java 파일을 이 프라퍼티에 추가시킨다. |
allSource | Groovy 소스 디렉토리의 모든 소스 파일을 이 프라퍼티에 추가시킨다. |
Groovy 플러그인은 프로젝트의 각 소스셋에 GroovyCompile 인스턴스를 추가한다. 이는 Compile
태스크를 상속한다. 이 태스크는 Ant Groovyc 태스크에 컴파일을 위임한다.
CompileGroovy의 프라퍼티들은 다음과 같다.
태스크 프라퍼티 | 타입 | 기본값 |
---|---|---|
classpath | FileCollection | 소스셋.compileClasspath |
source | FileTree | |
destinationDir | File | 소스셋.output.classesDir |
groovyClasspath | FileCollection | groovy configuration |
// /src/main/groovy 안의 *.java 인코딩 [compileGroovy, compileTestGroovy]*.options*.encoding = 'UTF-8' // /src/main/groovy 안의 *.groovy 인코딩 [compileGroovy, compileTestGroovy]*.groovyOptions*.encoding = 'UTF-8' // 길게 풀어쓰면 compileGroovy { groovyOptions.encoding = defaultEncoding // affects *.groovy under src/main/groovy options.encoding = defaultEncoding // affects *.java under src/main/groovy }
tasks.withType(GroovyCompile) { groovyOptions.optimizationOptions.indy = true }