문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
|
gradle:java [2015/10/08 10:36] kwon37xi [JavaExec] |
gradle:java [2022/06/30 16:36] (현재) kwon37xi [Test 완료후에 실패건이 있는지 마킹만 하기] |
||
|---|---|---|---|
| 줄 39: | 줄 39: | ||
| // 소스 인코딩 지정방법 1 | // 소스 인코딩 지정방법 1 | ||
| - | [compileJava, | + | [compileJava, |
| // 소스 인코딩 지정밥법 2 | // 소스 인코딩 지정밥법 2 | ||
| - | tasks.withType(Compile) { | + | tasks.withType(JavaCompile) { |
| + | options.encoding = ' | ||
| + | } | ||
| + | javadoc | ||
| options.encoding = ' | options.encoding = ' | ||
| } | } | ||
| 줄 62: | 줄 65: | ||
| * 빌드 결과 : '' | * 빌드 결과 : '' | ||
| * '' | * '' | ||
| + | * '' | ||
| ===== 기본 태스크 ===== | ===== 기본 태스크 ===== | ||
| * '' | * '' | ||
| 줄 269: | 줄 272: | ||
| |title | String | 프로젝트 이름과 버전 | | |title | String | 프로젝트 이름과 버전 | | ||
| * [[http:// | * [[http:// | ||
| + | |||
| + | ==== Java 9 HTML5 javadoc ==== | ||
| + | * [[java: | ||
| + | * [[http:// | ||
| + | < | ||
| + | javadoc { | ||
| + | options.addBooleanOption(' | ||
| + | } | ||
| + | </ | ||
| + | |||
| ==== 멀티 모듈의 소스를 합쳐 Javadoc 생성 ==== | ==== 멀티 모듈의 소스를 합쳐 Javadoc 생성 ==== | ||
| 줄 384: | 줄 397: | ||
| * 컴파일러 옵션 지정 <code groovy> | * 컴파일러 옵션 지정 <code groovy> | ||
| - | compileJava.options.compilerArgs = [' | + | compileJava.options.compilerArgs = [" |
| + | |||
| + | // 혹은 | ||
| + | tasks.withType(JavaCompile) { | ||
| + | options.compilerArgs << " | ||
| + | } | ||
| </ | </ | ||
| 줄 398: | 줄 417: | ||
| * 테스트 수행이 끝나면 보고서를 생성한다. | * 테스트 수행이 끝나면 보고서를 생성한다. | ||
| * JUnit, TestNG를 지원한다. | * JUnit, TestNG를 지원한다. | ||
| + | * [[https:// | ||
| ==== 테스트 실행 ==== | ==== 테스트 실행 ==== | ||
| * 테스트는 독립 JVM에서 격리상태로 실행된다. | * 테스트는 독립 JVM에서 격리상태로 실행된다. | ||
| 줄 415: | 줄 434: | ||
| } | } | ||
| </ | </ | ||
| - | * '' | + | * '' |
| + | * '' | ||
| * '' | * '' | ||
| * 표준 출력/ | * 표준 출력/ | ||
| 줄 460: | 줄 480: | ||
| * '' | * '' | ||
| - | ==== 테스트의 분리 ==== | + | ==== 테스트의 분리 |
| * '' | * '' | ||
| * [[http:// | * [[http:// | ||
| 줄 488: | 줄 508: | ||
| } | } | ||
| </ | </ | ||
| + | |||
| + | ==== 테스트의 분리 - 소스셋 분리 - 권장 ==== | ||
| + | * [[https:// | ||
| + | |||
| + | <code groovy> | ||
| + | // 별도 소스셋 구성 | ||
| + | sourceSets { | ||
| + | integrationTest { | ||
| + | java { | ||
| + | compileClasspath += main.output + test.output | ||
| + | runtimeClasspath += main.output + test.output | ||
| + | srcDir file(' | ||
| + | } | ||
| + | groovy { // for Spock | ||
| + | compileClasspath += main.output + test.output | ||
| + | | ||
| + | srcDir file(' | ||
| + | } | ||
| + | resources.srcDir file(' | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // integrationTest 전용 configuration 지정. | ||
| + | // integrationTest에만 필요한 의존성 지정 가능. | ||
| + | |||
| + | configurations { | ||
| + | integrationTestCompile.extendsFrom testCompile | ||
| + | integrationTestRuntime.extendsFrom testRuntime | ||
| + | } | ||
| + | |||
| + | // Task 생성 | ||
| + | task integrationTest(type: | ||
| + | testClassesDirs = sourceSets.integrationTest.output.classesDirs // 구버전에서는 Dir 단수형으로만 지정됨. | ||
| + | classpath = sourceSets.integrationTest.runtimeClasspath | ||
| + | reports { // reports 는 원하는대로만. | ||
| + | junitXml.enabled = true | ||
| + | html.enabled = true | ||
| + | ignoreFailures = true | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // 의존성 지정으로 check 실행시 자동 테스트 | ||
| + | check.dependsOn integrationTest | ||
| + | </ | ||
| + | |||
| + | ==== TestSets Plugin 사용 ==== | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * TBD | ||
| ==== Convention Values ==== | ==== Convention Values ==== | ||
| 줄 541: | 줄 610: | ||
| reportOn subprojects*.test | reportOn subprojects*.test | ||
| } | } | ||
| + | </ | ||
| + | |||
| + | ==== Test 완료후에 실패건이 있는지 마킹만 하기 ==== | ||
| + | * '' | ||
| + | * [[git: | ||
| + | <code groovy> | ||
| + | test { | ||
| + | ignoreFailures = true | ||
| + | afterSuite { TestDescriptor desc, TestResult result -> | ||
| + | if (result.failedTestCount > 0) { | ||
| + | rootProject.buildDir.mkdir() | ||
| + | File testFailed = rootProject.file(" | ||
| + | if (!testFailed.exists()) { | ||
| + | testFailed.createNewFile() | ||
| + | testFailed.text = "이 파일이 존재하면 테스트중 실패한 건이 존재한다는 의미입니다." | ||
| + | } | ||
| + | logger.warn(" | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | * 다른 stage 에서 ''< | ||
| + | |||
| + | <code sh> | ||
| + | if [ -f " | ||
| + | echo "file exists" | ||
| + | exit 1 | ||
| + | fi | ||
| </ | </ | ||
| ===== Jar ===== | ===== Jar ===== | ||
| 줄 598: | 줄 695: | ||
| ===== JavaExec ===== | ===== JavaExec ===== | ||
| Java 클래스를 실행할 때 [[gradle: | Java 클래스를 실행할 때 [[gradle: | ||
| - | '' | + | '' |
| [[gradle: | [[gradle: | ||
| 줄 628: | 줄 725: | ||
| args ' | args ' | ||
| systemProperty ' | systemProperty ' | ||
| + | jvmArgs ' | ||
| } | } | ||
| </ | </ | ||