본문 바로가기
컴퓨터/오류해결

[SpringBoot] intelliJ + maven + Querydsl maven 오류 (target 에 q 클래스 생성 오류)

by 버니케이 2022. 2. 24.
반응형

 

com.mysema.codegen.model.Type

 

오랜만에 쓰는 오류 해결 포스팅!

이번 오류는 maven 이여서 해결하는데 더 오래걸렸다. 진짜 별거 아니었는데ㅠㅠ

 

 

 

1. 문제 발생
2. 문제 원인 찾기 (는 그냥 시도했던 해결방법들)
3. 문제 해결

 

1. 문제 발생

Querydsl 과 Qdomain 을 사용하기 위해서 의존성 + 플러그인을 주입해줬다.

maven 을 사용했기 때문에 pom.xml 형식이었움

 

<dependencies> </dependencies> 사이에 넣어준 querydsl 의존성

<!-- Querydsl  -->
<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-jpa</artifactId>
    <version>4.3.1</version>
</dependency>
<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-apt</artifactId>
    <version>4.3.1</version>
</dependency>

 

<plugins></plugins> 사이에 넣어준 Qdomain 플러그인

<!--Qdomain-->
<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>

 

Qdomain 플러그인을 넣어줬기 때문에

Q클래스들이 만들어져야 하는데

 

여기서 컴파일을 아무리 눌러봐도

com.mysema.codegen.model.Type

해당 오류가 뜬다.

 

 

2. 문제 원인 찾기 (는 그냥 시도했던 해결방법들)

2-1 file -> project structure -> modules 에서 sources 설정하기

 

예전에 maven 을 공부했던 책을 뒤져서 방법을 찾아봤다.

그래서 책을 따라서

해줬지만 해결이 안되었당

 

 

2-2 maven clean 해주기

https://velog.io/@yulhee741/JPA-QueryDSL-Q-Class-%EC%83%9D%EC%84%B1-%EC%95%88%EB%90%A0-%EB%95%8C

 

[JPA] QueryDSL Q Class 생성 안될 때

pom.xml에 querydsl관련 의존성과, 플러그인을 설정했는데 Q Class가 생성이 되질 않았다.File - Project Structure - Modules 메뉴에 들어가서 target 폴더 아래의 generated-sources 폴더를 소스코드로 인식할 수

velog.io

해당 글을 참고해서 clean 을 해줬지만 마찬가지로

해결ㄴㄴ

 

 

2-3 의존성, 플러그인 수정

https://djunnni.gitbook.io/springboot/appendix/querydsl

 

1. Querydsl - SpringBoot 2.X 정리

Hibernate: select board0_.bno as bno1_0_, board0_.content as content2_0_, board0_.regdate as regdate3_0_, board0_.title as title4_0_, board0_.updatedate as updateda5_0_, board0_.writer as writer6_0_ from tbl_boards board0_ where (board0_.title like ? escap

djunnni.gitbook.io

해당 글을 참고해서 의존성을 수정해줬지만 

해결되지 않았ㅠㅠㅠㅠ

(나랑 다른 오류였지만.. 혹시 해결될까봐 무지성 복붙을 했당)

 

 

3. 문제 해결

문제 해결은 인프런 사이트의 질문게시판에서 힌트를 얻어서 해결했다.

 

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

 

compileQuerydsl 오류 - 인프런 | 질문 & 답변

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼

www.inflearn.com

바로 이 글이었는데

직접적으로 도움은 안되었다.

 

저 글은 커여운 코끼리를 사용했기 때문이다.

나같이 비루하게 maven 을 쓰는 사람은 도움이 되지 않을 것이다.

 

 

 

아무튼 저 글의 핵심은

'커여운 코끼리도 버전오류때문에 q클래스가 생성되지 않았다고 한다.'

커여운 gradle

 

 

 

그래서 내 비루한 메이븐도 버전을 수정해주기로 했다.

<dependencies> </dependencies> 사이에 넣어준 querydsl 의존성에서 버전 부분을 주석 처리 했다.

<!-- Querydsl  -->
<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-jpa</artifactId>
<!--			<version>4.3.1</version>-->
</dependency>
<dependency>
    <groupId>com.querydsl</groupId>
    <artifactId>querydsl-apt</artifactId>
<!--			<version>4.3.1</version>-->
</dependency>

(사실 오류 안나는 버전을 찾으려 엄청 고생 하다가 그냥 주석처리했더니 해결되었따. 이 허무함ㅠㅠ)

 

 

그리고 이 안커여운 메이븐 눌러준다음에

다시 컴파일을 더블클릭해줬다.

 

와! 빌드!

빌드가 성공했다는 문구가 뜨면서

 q클래스가 생성된 것을 확인할 수 있다.

 

 

끝!

반응형

댓글