Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Gradle > Dependencies: (중복 선언) Jakarta annotation-api 및 persistence-api #82

Open
2 tasks
merge-simpson opened this issue Mar 3, 2025 · 0 comments
Labels
status: new A new issue type: dependency-update A dependency update

Comments

@merge-simpson
Copy link
Member

merge-simpson commented Mar 3, 2025

이슈 개요

Jakarta annotation-api 및 persistence-api는 이미 각각 Spring Boot Starter, Spring Data JPA 등에서 함께 제공합니다.
따라서 중복된 선언입니다.


작업 목록

  • jakarta.annotation-api의 중복 선언을 제거합니다.
  • jakarta.persistence-api의 중복 선언을 제거합니다.

부연 설명

자세한 정보는 다음을 참고하세요.

의존성 분석기

인텔리제이에서 의존성 분석기(dependency analyzer)를 사용해 다음 두 의존성의 중복 선언을 확인할 수 있습니다.
스코프를 Any 대신 AnnotationProcessor 스코프로 필터해도 중복을 확인할 수 있습니다.


jakarta.annotation-api

Dependency analyzer shows the duplication calling jakarta annotation api

우리는 이 의존성을 다음 세 경로로 추가하였습니다.
(BOM 및 gradle의 의존성 관리 전략 덕분에 버전 충돌을 회피할 수 있었습니다.)

  • 명시적으로 추가한 jakarta.annotation-api
  • spring-boot-starter-data-jpa에서 제공하는 jakarta.annotation-api
  • spring-boot-starter-web에서 제공하는 jakarta.annotation-api


jakarta.persistence-api

Dependency analyzer shows the duplication calling jakarta persistence api

우리는 이 의존성을 다음 두 경로로 추가하였습니다.
(BOM 및 gradle의 의존성 관리 전략 덕분에 버전 충돌을 회피할 수 있었습니다.)

  • 명시적으로 추가한 jakarta.persistence-api
  • spring-boot-starter-data-jpa에서 제공하는 jakarta.persistence-api


참고: 예외적으로 중복 선언을 하는 케이스

  • 버전 상향(higher version): 번들로 제공되는 의존성(transitive dependency) 버전보다 높은 버전을 명시적으로 사용하고 싶을 때, 그 의존성을 중복으로 추가할 수 있습니다. 동일한 의존성에 대해 서로 다른 버전을 선언하면, gradle 의존성 관리 전략에서 자동으로 가장 높은 버전을 선택합니다. (기본 전략)

또는 원하는 버전을 사용하도록 지정하기 위한 방식들도 있습니다. (Gradle에서 resolutionStrategy 또는 constraints 구문 참고1 Gradle Docs)




참조

@merge-simpson merge-simpson added status: new A new issue type: dependency-update A dependency update labels Mar 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: new A new issue type: dependency-update A dependency update
Projects
None yet
Development

No branches or pull requests

1 participant