Spring cloud config 와 Query Dsl 의존성 충돌

박우영·2023년 5월 15일
0

트러블 슈팅

목록 보기
10/19

해당 오류 코드이다.


에러발생한 디펜던시

    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"

./gradlew dependencies 명령어로 디펜던시를 확인해보면 intellij 에서 안내하는것과같이 자세히 확인 해 볼수 있다.

성공한곳

  • implementation

실패한 곳을 확인해보면

  • compileClasspath
  • productionRuntimeClasspath
  • runtimeClasspath
  • testCompileClasspath
  • testRuntimeClasspath

이렇게 확인 되었고 Spring boot 3.0 이후버전부턴 아래와 같은 javax가 아닌

jakarta로 되어야하는데 apt는 javax로 되어있는것을 확인 할 수 있었다.

해결


디펜던시를 수정했습니다. 버전을 확실히 명시

    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"

전엔 왜 됐을까...?


Spring Cloud Config 를 연동하기 전엔 왜 됐을까?

annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"

이부분이 환경변수로 되어있는데 intellij 로 실행할땐 플러그인이 되어있어서 저 버전이 나오지만 우리는 Spring Cloud를 gadlew - Docker 로 빌드하여 EC2에서 실행하고 있기때문에 충돌이 난거같다.

반대로 접근해보기


반대로 query dsl 디펜던시를 그대로 두고 기존에 jar로 빌드했던 spring cloud 설정을 없애고 해보면 정상적으로 동작하는것을 확인해볼 수 있었다.

회고


기존에 디펜던시는 spring boot 3.0 이후버전인 Jakarta 인지만 확인하고 그대로 복붙해서 사용했지만 호환되더라도 그 이유를 좀더 생각하는 계기가 됐습니다.
문제를 해결 후에는 항상 이거때문이었어? 싶은 정말 단순한 문제가 많았고 기본기가 중요하다고 하면 할수록 느끼는거같습니다. Application이 빌드되고 실행되는 과정 까지 깊이 있게 알아두면 다양한 트러블에 대한 문제해결능력에 많은 도움이 될 거같습니다.

0개의 댓글