프로젝트를 빌드했을 때 build/generated/sources/annotationProcessor/java/main/.... 에 Q파일들이 생성되는데요, 

소스코드를 찾는 과정에서 Q파일들의 코드를 인식하지 못하는 문제가 발생해서 source 세팅을 build.gradle 파일에 추가 해주었습니다.

 

아마 generated되는 Q파일의 경로를 /src/main/java 하위 경로에 생성되게 설정을 해두면 sourceSets 설정없이도 아마 인식할 것 같습니다. 

 

1. build.gradle 작성 

 - dependencies에 querydsl관련 설정 추가

 - sourceSets 에  "$projectDir/build/generated" 경로 추가 

 

2. gradle clean 후 다시 빌드 

 


build.gradle 공유 

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-devtools'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    //Querydsl 추가
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
    annotationProcessor("jakarta.persistence:jakarta.persistence-api") // java.lang.NoClassDefFoundError(javax.annotation.Entity) 발생 대응
    annotationProcessor("jakarta.annotation:jakarta.annotation-api") // java.lang.NoClassDefFoundError (javax.annotation.Generated) 발생 대응

}

sourceSets {
    main {
        java {
            srcDirs = ["$projectDir/src/main/java", "$projectDir/build/generated"]
        }
    }
}

tasks.named('test') {
    useJUnitPlatform()
}

clean {
    delete file('build/generated')
}

 

'Spring > SpringJPA' 카테고리의 다른 글

JPA 상속관계 매핑 - 신중히 생각하고 사용하자  (0) 2024.09.05

+ Recent posts