사용자 도구

사이트 도구


gradle:groovy

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

다음 판
이전 판
gradle:groovy [2012/10/02 19:45]
kwon37xi 새로 만듦
gradle:groovy [2014/09/11 03:17] (현재)
kwon37xi
줄 1: 줄 1:
 ====== Gradle Groovy Plugin ====== ====== Gradle Groovy Plugin ======
 +  * [[http://www.gradle.org/docs/current/userguide/groovy_plugin.html|Groovy Plugin]]
  
 +Groovy 플러그인은 [[gradle:java|Gradle Java Plugin]]를 상속하고 Groovy 프로젝트 지원을 추가한 것이다. Groovy 단독 혹은 Groovy/Java 혼합 프로젝트를 지원한다. Java 단독도 가능하다. Java와 Groovy간의 접합(Joint) 컴파일을 지원한다.
 +
 +  * ''build.gradle'' <code groovy>
 +apply plugin: 'groovy'
 +</code>
 +
 +====== 태스크 ======
 +
 +^태스크 이름 ^의존성 ^타입 ^설명 ^
 +| compileGroovy | compileJava | [[http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.compile.GroovyCompile.html|GroovyCompile]] | groovyc로 그루비 소스 컴파일 |
 +| compileTestGroovy | compileTestJava | [[http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.compile.GroovyCompile.html|GroovyCompile]] | groovyc로 그루티 테스트 소스 컴파일 |
 +| compile//소스셋//Groovy | compile//소스셋//Java | [[http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.compile.GroovyCompile.html|GroovyCompile]] | 주어진 소스셋 컴파일 |
 +| groovydoc | - | [[http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.javadoc.Groovydoc.html|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 소스도 올 수 있다. |
 +
 +====== 프로젝트 레이아웃 변경 ======
 +<code groovy>
 +sourceSets {
 +    main {
 +        groovy {
 +            srcDir 'src/groovy' // 운영 Groovy 소스 디렉토리를 추가한다.(기존값에 더하는 것임)
 +        }
 +    }
 +}
 +</code>
 +
 +''srcDir''은 [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/file/SourceDirectorySet.html#srcDir%28java.lang.Object%29|SourceDirectorySet.srcDir()]] 메소드이다.
 +
 +====== 의존성 관리 ======
 +''groovy'' 라는 의존성 구성이 추가된다.
 +
 +  * Gradle과는 무관하게 원하는 Groovy 버전을 선택할 수 있다.
 +  * Gradle이 컴파일/문서 생성시 사용하는 ''groovyc''와 ''groovydoc''은 지정된 버전의 것을 사용하게 된다.
 +  * Groovy 버전 지정 ''build.gradle'' <code groovy>
 +repositories {
 +    mavenCentral()
 +}
 +
 +dependencies {
 +    groovy group: 'org.codehaus.groovy', name: 'groovy', version: '1.7.10' // groovy 구성에 추가한다.
 +}
 +</code>
 +  * ''lib'' 디렉토리에 groovy JAR들을 둔 상태일 경우 의존성 구성 ''build.gradle'' <code groovy>
 +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')
 +        }
 +    }
 +}
 +</code>
 +
 +===== 소스셋 프라퍼티 =====
 +Groovy 플러그인은 소스셋에 다음 프라퍼티들을 추가한다.
 +
 +[[http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.GroovySourceSet.html|GroovySourceSet]] 타입이 선언한 프라퍼티들이다.
 +
 +^프라퍼티 이름 ^타입 ^기본값 ^설명 ^
 +| groovy | [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/file/SourceDirectorySet.html|SourceDirectorySet]] (read-only) | not null | 이 소스셋의 Groovy 소스 파일. 모든 *.groovy와 *.java를 포함하며 다른 것들은 제외시킨다. |
 +|groovy.srcDirs | Set<File> [[gradle:files|Gradle 파일 다루기]] 참조 | [//projectDir///src///name///groovy] | 이 소스셋의 Groovy 소스를 포함하는 디렉토리 목록. Java 소스도 있을 수 있다.]] |
 +| allGroovy | [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/file/FileTree.html|FileTree]] (read-only) | not null | 이 소스셋의 모든 Groovy 파일. 오직 ''.groovy'' 파일만 포함한다. |
 +
 +Groovy 플러그인은 몇몇 소스셋 프라퍼티들을 수정한다.
 +
 +^프라퍼티 이름 ^변경사항 ^
 +| allJava | Groovy 소스 디렉토리의 모든 *.java 파일을 이 프라퍼티에 추가시킨다. |
 +| allSource | Groovy 소스 디렉토리의 모든 소스 파일을 이 프라퍼티에 추가시킨다. |
 +
 +===== CompileGroovy =====
 +Groovy 플러그인은 프로젝트의 각 소스셋에 [[http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.compile.GroovyCompile.html|GroovyCompile]] 인스턴스를 추가한다. 이는 ''Compile'' 태스크를 상속한다. 이 태스크는 Ant Groovyc 태스크에 컴파일을 위임한다.
 +
 +CompileGroovy의 프라퍼티들은 다음과 같다.
 +
 +^태스크 프라퍼티 ^타입 ^기본값 ^
 +| classpath | [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/file/FileCollection.html|FileCollection]] | //소스셋//.compileClasspath |
 +| source | [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/file/FileTree.html|FileTree]] | //소스셋//.groovy
 +| destinationDir | File | //소스셋//.output.classesDir |
 +| groovyClasspath | [[http://www.gradle.org/docs/current/javadoc/org/gradle/api/file/FileCollection.html|FileCollection]] | groovy configuration |
 +
 +===== 컴파일 옵션들 =====
 +  * http://nobeans-en.blogspot.de/2009/12/how-to-specify-character-encoding-in.html
 +  * Groovy 소스 인코딩 지정 <code groovy>
 +// /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  
 +}  
 +</code>
 +  * [[http://blog.freeside.co/2014/06/24/enabling-groovys-invokedynamic-support-in-gradle/|Enabling Groovy’s “invokedynamic” support in Gradle]]<code groovy>
 +tasks.withType(GroovyCompile) {
 +  groovyOptions.optimizationOptions.indy = true
 +}
 +</code>
 +  * you should use **JDK 7u60** or above to avoid any potential invokedynamic related bugs.
gradle/groovy.1349174750.txt.gz · 마지막으로 수정됨: 2012/10/02 19:45 저자 kwon37xi