작성
·
1.3K
0
안녕하세요 강의 항상 잘 듣고 있습니다.
MVC 강의 부터 듣다가 최근에 회사에서 JPA 프로젝트를 진행 할 일이 있어서 작년에 결제해두었던 JPA 강의를 급하게 듣고 있습니다.
다름이 아니라 강의를 거의 다 듣고 querydsl 설정을 추가하고 나서 어플리케이션 실행했더니 실패하는 현상이 발생합니다.
build/generated/querydsl/ 이하경로에 파일도 잘 생성되었는데 lombok getter/setter와 관련된컴파일 에러 can,t not find symbol 가 발생하는 이유를 잘 모르겠습니다.
구글링해보나까 Lombok & Querydsl 같이 사용할때 발생할 수 있는 에러이고 아래와 같은 설정을 추가하면 해결될수 있다고 해서 추가해보았지만 해결되지 않아서 질문을 남깁니다.
project.afterEvaluate {
project.tasks.compileQuerydsl.options.compilerArgs = [
"-proc:only",
"-processor", project.querydsl.processors() +
',lombok.launch.AnnotationProcessorHider$AnnotationProcessor'
답변 1
1
안녕하세요. goodbyeyo2님
Querydsl 설정이 환경과 버전업 등에 영향을 많이 받습니다.
다음을 참고해서 진행해주세요.
plugins {
id 'org.springframework.boot' version '2.6.5'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'
ext["hibernate.version"] = "5.6.5.Final"
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
//JdbcTemplate 추가
//implementation 'org.springframework.boot:spring-boot-starter-jdbc'
//MyBatis 추가
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.0'
//JPA, 스프링 데이터 JPA 추가
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
//Querydsl 추가
implementation 'com.querydsl:querydsl-jpa'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
//H2 데이터베이스 추가
runtimeOnly 'com.h2database:h2'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
//테스트에서 lombok 사용
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
}
tasks.named('test') {
useJUnitPlatform()
}
//Querydsl 추가, 자동 생성된 Q클래스 gradle clean으로 제거
clean {
delete file('src/main/generated')
}
감사합니다.