개발

Maven dependency가 겹칠경우 본문

Java

Maven dependency가 겹칠경우

Dev.hs 2022. 1. 9. 13:36
  • pom.xml

      ...
      <dependency>
          <groupId>javax.mail</groupId>
          <artifactId>mail</artifactId>
          <version>1.4.7</version>
      </dependency>
    
      ...
    
      <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-email</artifactId>
          <version>1.5</version>
      </dependency>
    
      ...
  • commons-email은 javax.mail 1.5.6에 의존한다..(commons-email 열어보면있음)

      <dependency>
          <groupId>com.sun.mail</groupId>
          <artifactId>javax.mail</artifactId>
          <version>1.5.6</version>
      </dependency>
  • 현재 라이브러리의 상태

  • javax.mail 1.4.7과 sun.mail1.5.6은 MimeBodyPart에서 소스가 다른데, 실제 ServiceImpl에서 클래스파일 참조시에는 다음처럼 버전은 명시하지않음.

       import javax.mail.internet.MimeBodyPart;
  • 문제

    • 프로젝트로 설치할 경우 1.4.7을 참조하는 프로젝트도있고 1.5.6을 참조하는 프로젝트도있다.

참고

https://stackoverflow.com/questions/35381533/maven-multiple-version-of-same-dependency

For Java it doesn't matter how many versions of a class you provide. The default classloader will just pick the first one on the classpath it can find.

→ commons-email은 사용하지 않으므로 의존성 정리 필요함.

'Java' 카테고리의 다른 글

ORACLE OPEN JPA에서 설정과 다른 schema의 db를 조회  (0) 2022.01.09
Stream  (0) 2021.03.14
Class 클래스  (0) 2021.03.06
제네릭 기초  (0) 2021.03.06
자주쓰는 날짜 관련 api 정리 (yyyyMMddHHmmss)  (0) 2021.02.23
Comments