본문 바로가기

Gradle

[gradle] spring-data-jpa gradle test fail

CMD를 진행하면서 예전에 셋팅했던 기억을 되살려 프로젝트 셋팅을

Spring-data-JPA + Hibernate로 그리고 gradle을 사용해서 셋팅을 하였다.

local에서는 embeded HSQLDB를 사용해서 메모리에 올려서 작동하도록 구성을 하였는데

이클립스에서는 간단한 JPARepository Testcase가 제대로 잘 동작을하는데 (save, findAll 등)

터미널에서 gradle build 명령을 실행하면 build도중 testcase가 실패하는 문제가 발생하였다.


에러메시지는 @Entity annotation을 달고있는 Entity 클래스가 JPA에 의해서 관리되지 않는 Entity다.. 뭐 이런 메시지..


몇번을 뒤적거리다 원인을 stackoverflow에서 찾을 수 있었다.


http://stackoverflow.com/questions/14742941/no-persistent-classes-found-when-integration-test-in-gradle


원인은 gradle은 build시에 resources와 classes 디렉토리를 별도로 만들어서 build를 하는데

JPA는 이 resources 파일들과 classes파일들이 같은 디렉토리에 존재해야 한다는 것이다. 


해결책은 build.gradle에 아래를 추가...


sourceSets.main.output.resourcesDir = sourceSets.main.output.classesDir
sourceSets.test.output.resourcesDir = sourceSets.test.output.classesDir


수정하고 돌려보니 Pass가 된다..