참고글
메이븐 의존설정 제외하기. exclusions 태그 용도 및 기능
메이븐의 가장 큰 장점으로 라이브러리 의존 해결 기능입니다. 예를 들어 spring-context 라이브러리가 필요하다면 pom.xml에 다음과 같이 <dependency> 를 정의해주기만 하면 됩니다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.0.RELEASE</version>
</dependency> |
cs |
그런데 여기서 중요한 점은 spring-context를 개발할때 사용한 라이브러리가 있다는 것입니다. 예를 들어 logging 관련 프레임워크인 commons-logging이 그 예인데, 이 경우 메이븐이 spring-context의 <dependency>를 참고하여 자동으로 commons-logging까지 내려받게 됩니다.
<exclusions> 용도 및 사용법
<exclusions>는 뜻 그대로 특정 의존 라이브러리를 제외시키는 기능을 합니다.
앞선 예를 기준으로 설명해보자면 spring-context-4.1.0.jar이 commons-logging-1.0.0.jar를 의존한다고 했을때 spring-context-4.1.0을 dependency 설정으로 등록했을때 자동으로 commons-logging-1.0.0.jar를 내려받아 빌드환경에 추가됩니다.
이때 여기서 두가지 문제가 있을 수 있습니다.
첫번째로 spring-context-4.1.0.jar을 사용하지만 commons-logging은 2.0.0을 사용하고 싶은 경우입니다.
두번째로 spring-context를 사용하지만 로깅 프레임웍을 commons-logging(log4j)가 아닌 logback(slf4j)을 사용하고 싶은 경우입니다.
이경우 명시적으로 <exclusions>를 통해 commons-logging-1.0.0이 추가되지 않도록 할 수 있습니다. <exclusions>는 다음과 같은 형식으로 사용합니다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.0.RELEASE</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency> |
cs |
그러나 이대로 테스트를 수행하거나 빌드를 하는경우 당연히 실패할것입니다. 의존하는 logging 라이브러리가 없기 때문이지요. 따라서 exclusions를 사용한 경우 그 빈자리를 채워줄 dependency를 추가로 정의해주어야 합니다.
의존 라이브러리 모두 제외시키기
추가적으로 a.jar를 의존설정에 추가하지만 a.jar가 참조하는 모든 라이브러리를 자동으로 내려받지 않도록 하기 위해서는 아래와 같이 사용할 수 있습니다. 예를 들어 spring-context가 commons-logging 이외에도 여러가지 라이브러리를 의존하고 있을 수 있는데 그 모든것을 명시적으로 제외시켜주는것입니다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.0.RELEASE</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency> |
cs |
단 spring-context가 참조하는 모든 라이브러리를 직접 dependency로 추가해주거나 클래스패스를 설정하고 해당 패스에 직접 라이브러리를 등록해주어야 합니다.
'툴 [Tool]' 카테고리의 다른 글
[VSCode] Visual Studio Code 테마 Material Theme 설치하기 (0) | 2019.07.28 |
---|---|
[VSCode] Visual Studio Code 설치하기 및 한국어 설정 방법 (0) | 2019.07.28 |
[Maven] Apache Maven. 메이븐이란? 메이븐 다운로드 및 설치 방법 (2) | 2019.05.27 |
[Chrome] 기본 글꼴 font 설정 바꾸는 방법 (0) | 2019.05.17 |
[Atom] Atom 에디터 다운로드 및 설치하기 (0) | 2019.05.02 |