본문 바로가기

Programming!

JPA QueryDsl이나 기타 Generate SRC 를 사용하는 경우. - Gradle

java.lang.IllegalStateException: endPosTable already set

가끔 저 오류를 볼 수 있는데.. 대체적으로 아마 generatesrc 로 인한 문제라고 생각한다. 즉, generatesrc가 기존에 source path로 등록되어 있는데 제대로 clean이 안된 상태에서 다시 source path를 만들어 등록하려고 해서 내뱉는 오류.

 

즉, 빌드 전 해당 generated source path를 지우면 된다. 

 

clean을 이용하는 경우 

clean.doLast {
	file(querydslGenratedSrc).deleteDir()
}

 task를 이용하는 경우

def querydslGenratedSrc = 'src/main/generated'

task deleteGeneratedSources(type: Delete) {
  delete file(querydslGenratedSrc)
}

tasks.withType(JavaCompile) { it.dependsOn('deleteGeneratedSources') }

options으로 처리하는 경우

tasks.withType(JavaCompile) {
	options.incremental = false
	options.annotationProcessorGeneratedSourcesDirectory = file(querydslGenratedSrc)
}

 

이래도 안되고 저래도 안된다면... ./gradlew clean build(assemble) 이렇게 한번에 명령어를 날리지 말고 clean 후 build(또는 assemble)을 실행하자. (두번도 좋다.)