everyday com-eat
작성일
2023. 4. 5. 19:07
작성자
갱수터
728x90
개발환경

IDE - sts4.16.1
java - 17.0.5
springboot - 3.0.5

패스트캠퍼스 [초격차 패키지 Online. 10개 프로젝트로 완성하는 백엔드 웹개발(Java/Spring)] 강의 

'part2. 기본적인 게시판 서비스'를 듣던 중 

querydsl를 bulid.gradle 파일에 의존성 추가하고 gradle 빌드하면 

execute compile for :compilejava 오류가 남

 

여러가지 시도해봤는데 결국 해결 방안은 강의에서 나온 설정과 아주 조금만 바꿔주면 된다....

강의에서 사용된 springboot 버전과 querydsl 버전이 내가 높은 버전이라 설정 방법이 조금 달랐던 듯

implementation "com.querydsl:querydsl-jpa"에서 ":버전:jakarta"를 추가해주고

annotationProcessor "com.querydsl:querydsl-apt:${쿼리dsl 버전정보}:jpa"에서 jpa를 jakarta로 변경해줬더니

generated 폴더안에 Q클래스 잘 생겼다...

dependencies {

	...
    
    
    // queryDSL 설정
    implementation "com.querydsl:querydsl-jpa:5.0.0:jakarta"
    implementation "com.querydsl:querydsl-core"
    implementation "com.querydsl:querydsl-collections"
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" // querydsl JPAAnnotationProcessor 사용 지정
    annotationProcessor "jakarta.annotation:jakarta.annotation-api" // java.lang.NoClassDefFoundError (javax.annotation.Generated) 대응 코드
    annotationProcessor "jakarta.persistence:jakarta.persistence-api" // java.lang.NoClassDefFoundError (javax.annotation.Entity) 대응 코드
    
   }
   
   //Querydsl 설정부
def generated = 'src/main/generated'

// querydsl QClass 파일 생성 위치를 지정
tasks.withType(JavaCompile) {
    options.getGeneratedSourceOutputDirectory().set(file(generated))
}

// java source set 에 querydsl QClass 위치 추가
sourceSets {
    main.java.srcDirs += [ generated ]
}

// gradle clean 시에 QClass 디렉토리 삭제
clean {
    delete file(generated)
}