본문 바로가기
Spring/JPA

Spring Boot 3.0 QueryDsl Maven 설정하기

by 흑시바 2023. 4. 9.

✏️ 배경

토이 프로젝트에서는 최신 환경으로 해보고 싶어서 Spring Boot 3.0 버전과 Spring Framework 6을 사용해서 개발을 진행하고 있었는데, 복잡한 동적 쿼리를 해결하기 위해 Querydsl 도입하기 위해 적용하는 시점에 설정 후 컴파일에 계속해서 실패하는 상황이 발생했다.

 

스프링 부트 3.0 Maven 환경에서 Querydsl을 적용하는 방법에 대해서 간단히 공유하고자 한다.

Gradle 환경이라면 다른 포스트를 찾아보는 걸 권장한다.

🔎 AS-IS

보통 Querydsl 설정을 검색해서 보면 아래와 같은 설정을 하라는 글을 많이 접하게 된다.

 

<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-apt</artifactId>
    <version>5.0.0</version>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>com.querydsl</groupId>
	<artifactId>querydsl-jpa</artifactId>
    <version>5.0.0</version>
</dependency>

<!-- 플러그인 설정 -->

<plugin>
    <groupId>com.mysema.maven</groupId>
    <artifactId>apt-maven-plugin</artifactId>
    <version>1.1.3</version>
    <executions>
        <execution>
            <goals>
                <goal>process</goal>
            </goals>
            <configuration>
                <outputDirectory>target/generated-sources/java</outputDirectory>
                <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
            </configuration>
        </execution>
    </executions>
</plugin>

 

필자도 초반에 해당 설정 관련 글을 읽고 프로젝트에 적용했으나, maven compile 과정 중 javax.persistence.Entity 관련 에러가 발생했다.

 

에러를 보고 엔티티 import의 jakarta.persistence를 단순하게 javax.persistence로 변경해서 적용을 성공시키긴 했지만 잘못된 방법이었다. (결국 런타임에 실패하게 된다.) 😂😂😂😂

🔎 TO-BE

<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-apt</artifactId>
    <version>5.0.0</version>
    <classifier>jakarta</classifier>
    <scope>provided</scope>
</dependency>

<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-jpa</artifactId>
    <version>5.0.0</version>
    <classifier>jakarta</classifier>
</dependency>

 

<classifier> jakarta </classifier>를 추가하여 Querydsl이 JakartaEE를 지원하도록 해야 한다.

 

만약 스프링 부트 2.x.x 버전에서 3.xx 버전으로 새롭게 올리는 과정이라면 apt-maven-plugin 플러그인 설정도 삭제해주어야 한다. Querydsl jakarta 버전에서는 이미 javax.annotation.processing.Processor를 제공하고 있다고 한다.

REFERENCE

https://post.dooray.io/we-dooray/tech-insight-ko/back-end/4173/

 

스프링 부트 3.0 으로 전환 - Dooray! POST

2022년 11월에 기존의 Spring framework 5 와 Spring Boot 2.X 버전을 대체하는 Spring framework 6와 Spring Boot 3 가 릴리즈되었습니다. 어떤 변화가 있고, 어떻게 설정해야 할지 알아봅니다

post.dooray.io

댓글