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

Hyeongjun Kim님의 프로필 이미지
Hyeongjun Kim

작성한 질문수

실전! Querydsl

Querydsl 설정과 검증

SpringBoot 3.0.2 버전 QueryDSL 설정문제

작성

·

8.1K

·

수정됨

0


[질문 내용]
안녕하세요. 수강생 김땡땡이라고 합니다.

추가로 작성해주신 Spring 3.0 버전 설정을 적용해서 build.gradle을 작성했는데 아래와 같은 에러가 발생하면서 테스트 에러가 발생합니다.

 

먼저 강의내용과 수업자료를 통해서 Springboot 3.0 이상 버전에서 설정해야되는 부분들을 추가했습니다. javax관련 오류는 뜨지 않습니다. 하지만 다른 문제가 생겼는데요..

 

gradle >other >compileQuerydsl 을 실행하면,

문제점이 있습니다. compileQuerydsl을 통해서 생성되는 Q Class는 build 경로에만 생기고 src/main에는 생성이 되지 않는다.

<build 경로 아래에는 성공적으로 Qclass 가 생성되었습니다.>

하지만 src/main아래에는 생성되지 않았네요..

 

 

그래도 build 경로아래에 QClass가 생성되어있으니 간단한 Test는 될 것 같아서 수업 내용을 따라서 작성하고 실행해봤는데. 위와 같은 에러가 발생했습니다. Qclass를 찾지못해 발생하는 오류같은데..

왜 이런 현상이 생기는지 모르겠습니다. 강사님과 똑같이 작성했는데.. 단순 버전 문제일까요? 이런경우엔 gradle 버전도 상관이 있는건가요? 현재 사용하는 gradle 버전은 확인해보니 7.6입니다.

검색을 많이 해봐도 해결방안이 나오질 않습니다. 도움 부탁드립니다.

 

 

=======================저의 build.gradle 설정========================

plugins {
	id 'java'
	id 'org.springframework.boot' version '3.0.2'
	id 'io.spring.dependency-management' version '1.1.0'
	id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}

group = 'study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

configurations {
	compileOnly {
		extendsFrom annotationProcessor
	}
}

repositories {
	mavenCentral()
}

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-web'

	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.annotation:jakarta.annotation-api"
	annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

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

//querydsl 추가 시작

def querydslDir = "$buildDir/generated/querydsl"
querydsl {
	jpa = true
	querydslSourcesDir = querydslDir
}
sourceSets {
	main.java.srcDir querydslDir
}
configurations {
	querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
	options.annotationProcessorPath = configurations.querydsl
}
//querydsl 추가 끝

 

======================= Hello Entity =============================

package study.querydsl.entity;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import lombok.Getter;
import lombok.Setter;

@Entity
@Getter
@Setter
public class Hello {
    @Id @GeneratedValue
    private Long id;
}

 

 

답변 3

1

안녕하세요!
같은 문제가 발생하여, 이러한 방법을 사용하였더니 빌드 문제가 해결되었습니다.
혹시 도움이 되실 수 있으실 수도 있어서 공유드립니다.
build.gradle


plugins {
    id 'java'
    id 'org.springframework.boot' version '3.0.2'
    id 'io.spring.dependency-management' version '1.1.0'
}

group = 'liar'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '17'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
    maven { url 'https://artifactory-oss.prod.netflix.net/artifactory/maven-oss-candidates' }
}

ext {
    set('springCloudVersion', "2022.0.1")
}

--- 중략 --

implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta'
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
sourceSets {
    main {
        java {
            srcDirs = ["$projectDir/src/main/java", "$projectDir/build/generated"]
        }
    }
}


clean {
    delete file('src/main/generated')
}


이후, 인텔리제이 Gradle에서

clean에 동기화 전, 빌드 전, 다시 빌드 전을 클릭하여 run을 실행하면 이상 없이 작동하였습니다.

image

도움이 되셨으면 좋겠습니다.
감사합니다.!

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. Hyeongjun Kim님

다음을 참고해주세요^^

https://www.inflearn.com/questions/779498

감사합니다.

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. Hyeongjun Kim님

우선 querydsl 설정에 따라서 build 폴더에만 Q 파일이 생기는 것은 정상적인 방법입니다.

다른 부분이 안되는 것은 확인이 필요할 것 같아요.

전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

추가로 다음 내용도 코멘트 부탁드립니다.

1. 실행 방법을 알려주세요.

2. 어떻게 문제를 확인할 수 있는지 자세한 설명을 남겨주세요.

감사합니다.

Hyeongjun Kim님의 프로필 이미지
Hyeongjun Kim

작성한 질문수

질문하기