인프런 커뮤니티 질문&답변

goodbyeyo2님의 프로필 이미지

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

QueryDSL 소개

build.gradle에 querydsl 추가하고나서 Application 실행이 실패합니다

작성

·

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'

 

querydsl error

 

답변 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')
}

감사합니다.