Language/Java

maven에서 log4j library 영구 제거하는 방법

아르비스 2017. 4. 20. 12:49

dependency로 자꾸 log4j가 들어와서 logback이 로딩이 안되는 경우.


다음과 같이 처리하면. 간단하게 처리된다.



<dependencies>

   ...

             <!-- Remove log4j -->

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>[1.2.4,)</version>

<scope>provided</scope>

</dependency> 

   ...

</dependencies>


기존에는 exclusions을 일일이 jar마다 해줘야 했는데.

위 방법을 사용하면 maven build 시 알아서 제거됨.


[Scope]
* provided : compile 과 매우 유사히지만, 실행시 의존관계를 제공하는 JDK나 컨테이너에 대해서 적용됨. 예를 들어, JEE에 대한 웹 어플리케이션을 만드는 경우, 웹 컨테이너가 서블릿 API와 Java EE API관련 클래스들을 제공하기 때문에 provided 영역으로 의존관계가 세팅되어야 함. 이 영역은 컴파일과 테스트의 클래스패스 용으로 사용되며, 자동영역임.


but ==> 이렇게 되면..



그냥 jar만 빠지는 거라서 runtime시 에러가 발생한다.


이런경우. 다음과 같이 수정한다.


log4j dependency를 제거하고, 아래  librarary를 추가한다.

[제거]

<dependency>

<groupId>샘플</groupId>

<artifactId>샘플</artifactId>

<version>샘플</version>

<exclusions>

<exclusion>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

</exclusion>

<exclusion>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

</exclusion>

</exclusions>

</dependency>


[ 추가 ]

<dependency>

    <groupId>org.slf4j</groupId>

    <artifactId>log4j-over-slf4j</artifactId>

    <version>1.7.25</version>

</dependency>



ㅎㅎㅎㅎ 

어렵다.