티스토리 뷰

반응형

보통 개발 시 IntelliJ 를 사용하여 Gradle의 컴파일 및 jar를 생성하여 작업을 진행합니다. 하지만 이게 도커에서 돌아가는 경우 보통 CLI 기반으로 작동이 되기 때문에 gradle build 또는 ./gradlew build 명령어를 사용하여 작업을 진행하는데 아래와 같이 에러가 나는 케이스입니다. 

테스트 에러 내용 그림

 

com.udp.estate.string.StringNumberUtilTest > yearMonthParseTest FAILED
    java.lang.NoClassDefFoundError at StringNumberUtilTest.java:93
        Caused by: java.lang.ClassNotFoundException at StringNumberUtilTest.java:93

com.udp.estate.string.StringNumberUtilTest > getPersent FAILED
    java.lang.NoClassDefFoundError at StringNumberUtilTest.java:85
        Caused by: java.lang.ClassNotFoundException at StringNumberUtilTest.java:85

 


 

실행 환경은 Java 11 버전의 IntelliJ 를 쓰지 않은 gradle build 를 할 때 나는 에러입니다. 에러 메시지를 보아하니 Test 파일들을 컴파일하면서 에러가 나는 것으로 보이는데요, 이런 경우 저는 아래와 같은 옵션을 build.gradle 파일에 추가해줬습니다. 

test.onlyIf {
    !project.hasProperty('test')
}

이렇게 옵션을 설정하는 경우 test 컴파일이 작동되는 조건이 조금 변경되긴 합니다. 회피책일수도 있겠지만 빌드 옵션중에 test라는 프로퍼티를 가진 상태에서만 테스트 컴파일이 작동이 되는 경우이기도 하고 TDD로 개발을 하는 프로젝트의 경우 해당사항이 되지 않을수도 있습니다. 

하지만 운영환경에서 다급하게 반영을 해야하는 경우 테스트 실패가 나서 jar 파일이 생성이 되지 않으면 안되겠죠. 성공적으로 gradle build 를 사용해야 할 때 이런 방법도 해결책이 될 수있다는 부분을 참고해주세요!

반응형
댓글
공지사항