maven pom.xml에서 사용되지 않는 종속성을 제거하는 간단한 방법이 있습니까?


277

많은 모듈과 많은 pom.xml파일을 가진 큰 Maven 프로젝트가 있습니다. 프로젝트가 변경되었으며 pom에 불필요한 종속성이 포함되어 있다고 생각합니다. pom에서 사용되지 않는 종속성을 제거하는 명령이 있습니까?


2
IntelliJ를 사용하는 경우 다음을 참조하십시오. jonnyzzz.com/blog/2013/05/13/… 연결 이 끊어진 경우 : Jonnyzzz 종속성 플러그인
Benj

3
@ Benj 나는이 jonnyzz 플러그인을 사용하려고 시도했지만 쓸모가 없었습니다. 대부분의 경우 사용되지 않는 종속성을 찾지 못할 때가 있으며 때로는 그렇게 할 때 build.gradle 파일이 아닌 클래스 경로에서 종속성을 제거합니다. 이 플러그인이 실제로 어떻게 작동하는지 설명하는 적절한 문서를 찾을 수도 없습니다.
vaibhav.g 2019

@ vaibhav.g 업데이트 주셔서 감사합니다. 2016 년 이후로 상황이 변한 것 같습니다.
Benj

답변:


222

메이븐 종속성 플러그인은 , 특히 도움이 될 것입니다 dependency:analyze목표 :

dependency:analyze이 프로젝트의 종속성을 분석하고 사용 및 선언 된 사항을 결정합니다. 사용 및 선언되지 않은; 사용되지 않고 선언되었습니다.

일부 정리를 수행하는 데 도움이 될 수있는 또 다른 방법 은 Maven Project Info Reports 플러그인Dependency Convergence 보고서 입니다 .


5
Eclipse에서 어떻게 이것을 트리거 할 수 있습니까?
Daniil Shevelev

134
종속성에주의하십시오 : 분석, 런타임에 사용되는 일부 라이브러리는 사용되지 않은 것으로 간주됩니다.
Nereis

27
런타임 및 제공된 종속성을 사용되지 않은 것으로보고하지 않도록 ignoreNonCompile옵션을 true로 설정할 수 있습니다.
sudeep

의존성을 사용하는 동안주의하십시오 : 분석, 심지어 'ejp api3'depedency를 사용하고 있었지만 보고서는 그것이 사용되지 않고 선언 된 것으로 나타났습니다
Akhil S Kamath

분석 결과를 이해하려면 다음 대답을 참조하십시오. "사용되지 않은 선언 된 종속성은 필요하지만 프로젝트에서 종속성으로 명시 적으로 선언되지 않은 종속성입니다." - stackoverflow.com/questions/4565740/...
Janac 미나

49

당신이 사용할 수있는 dependency:analyze -DignoreNonCompile

이것은 사용되지 않은 의존성 분석을 위해 / / / 범위를 무시하면서 사용되지 않은 선언사용되지 않은 선언 된 의존성 목록을 인쇄합니다 .runtimeprovidedtestsystem

이것을 사용하는 동안 조심하십시오 , 사용 된 일부 라이브러리는 사용 runtime되지 않은 것으로 간주됩니다!

자세한 내용은이 링크를 참조하십시오


4
[플러스] 런타임 언급 1 개!
gaurav

1
일부 런타임 종속성은 사용되지 않은 것으로 명확하지만 실제로 필요합니다.
스마트 코더

43

다른 사람들이 말했듯이 dependency : analyze 목표를 사용하여 사용 및 선언, 사용 및 선언되지 않은, 또는 사용되지 않은 선언 된 종속성을 찾을 수 있습니다. 종속성 을 찾을 수도 있습니다 : analyze-dep-mgtdependencyManagement 섹션에서 불일치를 찾는 데 유용 할 .

POM에서 원치 않는 직접 종속성을 간단히 제거 할 수 있지만 타사 jar에서 소개 된 경우 종속성에서 <exclusions>태그를 사용하여 타사 jar를 제외 할 수 있습니다 ( 자세한 내용 및 일부 토론 은 종속성 제외 섹션 참조 ). . 다음은 Spring 종속성에서 commons-logging을 제외하는 예입니다.

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring</artifactId>
  <version>2.5.5</version>
  <exclusions>
    <exclusion>
      <groupId>commons-logging</groupId>
      <artifactId>commons-logging</artifactId>
    </exclusion>
  </exclusions> 
</dependency>

3
(IntelliJ) I used the Jonnyzzz plugin, as commented to the question. Nice plugin, works well with IntelliJ 2016.1.3
Benj

34

Have you looked at the Maven Dependency Plugin ? That won't remove stuff for you but has tools to allow you to do the analysis yourself. I'm thinking particularly of

mvn dependency:tree

1
Excellent - thanks (couldn't find what I was looking for as I kept searching for "clean dependencies" and it was throwing up the clean plugin!! but this looks promising.. mvn dependency:analyze)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.