사용자 도구

사이트 도구


gradle:java

차이

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

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
gradle:java [2018/05/15 16:08]
kwon37xi [Java Project 기본 build.gradle]
gradle:java [2022/06/30 16:36] (현재)
kwon37xi [Test 완료후에 실패건이 있는지 마킹만 하기]
줄 65: 줄 65:
   * 빌드 결과 : ''build/*''   * 빌드 결과 : ''build/*''
     * ''buildDir'' 를 프로젝트에 상대적인 경로로 바꿔줄 수 있다. <code groovy>buildDir = 'target'</code>     * ''buildDir'' 를 프로젝트에 상대적인 경로로 바꿔줄 수 있다. <code groovy>buildDir = 'target'</code>
 +    * ''export GRADLE_OTPS="-Dorg.gradle.project.buildDir=/path/to/custom-build-dir'' System Property 옵션으로 ''buildDir''을 명령행에서 변경할 수 있다. 명령행에 지정하면 안 됐고, 항상 환경변수로 해야만 했다.
 ===== 기본 태스크 ===== ===== 기본 태스크 =====
   * ''clean'' : build 디렉토리 삭제   * ''clean'' : build 디렉토리 삭제
줄 272: 줄 272:
 |title | String | 프로젝트 이름과 버전 | |title | String | 프로젝트 이름과 버전 |
   * [[http://www.gradle.org/docs/current/javadoc/org/gradle/external/javadoc/StandardJavadocDocletOptions.html|StandardJavadocDocletOptions (Gradle API 1.10)]] 참조하여 javadoc 옵션들 지정.   * [[http://www.gradle.org/docs/current/javadoc/org/gradle/external/javadoc/StandardJavadocDocletOptions.html|StandardJavadocDocletOptions (Gradle API 1.10)]] 참조하여 javadoc 옵션들 지정.
 +
 +==== Java 9 HTML5 javadoc ====
 +  * [[java:9|Java 9]]부터 HTML5 Javadoc 생성가능함.
 +  * [[http://mrhaki.blogspot.com/2018/11/gradle-goodness-generate-javadoc-in.html|Gradle Goodness: Generate Javadoc In HTML5]]
 +<code>
 +javadoc {
 +    options.addBooleanOption('html5', true)
 +}
 +</code>
 +
  
 ==== 멀티 모듈의 소스를 합쳐 Javadoc 생성 ==== ==== 멀티 모듈의 소스를 합쳐 Javadoc 생성 ====
줄 407: 줄 417:
   * 테스트 수행이 끝나면 보고서를 생성한다.   * 테스트 수행이 끝나면 보고서를 생성한다.
   * JUnit, TestNG를 지원한다.   * JUnit, TestNG를 지원한다.
 +  * [[https://github.com/radarsh/gradle-test-logger-plugin|radarsh/gradle-test-logger-plugin: A Gradle plugin for printing beautiful logs on the console while running tests]]
 ==== 테스트 실행 ==== ==== 테스트 실행 ====
   * 테스트는 독립 JVM에서 격리상태로 실행된다.   * 테스트는 독립 JVM에서 격리상태로 실행된다.
줄 424: 줄 434:
 } }
 </code> </code>
-  * ''ignoreFailures'' 프라퍼티는 테스트 실패시 행위를 정의한다. 기본값은 ''false''이며 테스트가 실패하면 즉시 멈다. ''true''일 경우 테스트가 실패해도 멈추지 않고 다음으로 넘어다.+  * ''ignoreFailures'' 프라퍼티는 테스트 실패시 행위를 정의한다. 기본값은 ''false''이며 테스트가 실패하면 build를 실표로 표시한다. 단, 실패한 테스트에서 즉시 빌드를 추지는 않는다. ''true''일 경우 테스트가 실패해도 멈추지 않고 다음으로 넘어가며 빌드를 진행하고 성공으로 표시한다. 
 +  * ''failFast'' : ''true''이면 테스트 실패건에서 즉시 빌드를 중단한다. 테스트 실행시 ''--fail-fast'' 옵션을 줘도 된다.
   * ''testLogging'' 프라퍼티는 테스트의 로깅 레벨을 설정한다. 기본적으로 모든 실패한 테스트에 대한 요약 메시지를 보여준다. [[http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.testing.logging.TestLoggingContainer.html|TestLoggingContainer]] 참조.   * ''testLogging'' 프라퍼티는 테스트의 로깅 레벨을 설정한다. 기본적으로 모든 실패한 테스트에 대한 요약 메시지를 보여준다. [[http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.testing.logging.TestLoggingContainer.html|TestLoggingContainer]] 참조.
     * 표준 출력/에러를 화면에 표시하려면 ''testLogging.showStandardStreams = true'' 설정 필요.     * 표준 출력/에러를 화면에 표시하려면 ''testLogging.showStandardStreams = true'' 설정 필요.
줄 599: 줄 610:
     reportOn subprojects*.test     reportOn subprojects*.test
 } }
 +</code>
 +
 +==== Test 완료후에 실패건이 있는지 마킹만 하기 ====
 +  * ''ignoreFailures=true''로 두고 테스트를 진행하고 빌드를 완료하지만, 실패건이 있는지 여부를 나중에 알고자 할 때
 +  * [[git:gitlab|Gitlab]] CI 등에서 실패건이 있어도 후속 작업은 진행하기 위해서 만듬.
 +<code groovy>
 +test {
 +    ignoreFailures = true
 +    afterSuite { TestDescriptor desc, TestResult result ->
 +        if (result.failedTestCount > 0) {
 +            rootProject.buildDir.mkdir()
 +            File testFailed = rootProject.file("${rootProject.buildDir}/testFailedMarker")
 +            if (!testFailed.exists()) {
 +                testFailed.createNewFile()
 +                testFailed.text = "이 파일이 존재하면 테스트중 실패한 건이 존재한다는 의미입니다."
 +            }
 +            logger.warn("testFailedMarker - {}", result.failedTestCount)
 +        }
 +    }
 +}
 +</code>
 +  * 다른 stage 에서 ''<project-root>/build/testFailedMarker'' 파일의 존재여부를 체크해서 존재하면 테스트 실패로 간주한다.
 +
 +<code sh>
 +if [ -f "build/testFailedMarker" ]; then
 +    echo "file exists"
 +    exit 1
 +fi
 </code> </code>
 ===== Jar ===== ===== Jar =====
gradle/java.1526368089.txt.gz · 마지막으로 수정됨: 2018/05/15 16:08 저자 kwon37xi