Bir maven pom.xml dosyasından kullanılmayan bağımlılıkları kaldırmanın basit bir yolu var mı?


277

Birçok modül ve pom.xmldosya içeren büyük bir Maven projem var . Proje değişti ve pom'ların bazı gereksiz bağımlılıklar içerdiğinden şüpheleniyorum. Kullanılmayan bağımlılıkları bir pom'dan kaldıran bir komut var mı?


2
IntelliJ kullanıyorsanız, şuna bakın: jonnyzzz.com/blog/2013/05/13/… Bağlantı kesilmesi durumunda: Jonnyzzz Bağımlılıklar eklentisi
Benj

3
@Benj Bu jonnyzz eklentisini kullanmaya çalıştım ve işe yaramadı. Çoğu zaman kullanılmayan bağımlılıklar bulamaz ve bazen de bağımlılıkları build.gradle dosyasından değil sınıf yolundan kaldırır. Bu eklentinin gerçekten nasıl çalıştığını açıklamak için uygun bir dokümanı bile bulamıyorum.
vaibhav.g

@ vaibhav.g güncelleme için teşekkürler. Görünüşe göre 2016'dan beri işler değişti.
Benj

Yanıtlar:


222

Maven Bağımlılık eklentisi , özellikle yardımcı olacaktır dependency:analyzegolü:

dependency:analyzebu projenin bağımlılıklarını analiz eder ve hangilerinin kullanıldığını belirler: kullanılmış ve beyan edilmemiş; kullanılmamış ve beyan edilmiş.

Bazı temizlik işlemlerine yardımcı olabilecek bir başka şey de Maven Proje Bilgi Raporları Eklentisi'nin Bağımlılık Yakınsama raporudur .


5
Eclipse'de bunu nasıl tetikleyebilirim?
Daniil Shevelev

134
Bağımlılığa karşı dikkatli olun: analiz edin, çalışma zamanında kullanılan bazı kütüphaneler kullanılmamış olarak kabul edilir.
Nereis

27
Çalışma zamanının ve sağlanan bağımlılıkların kullanılmamış olarak bildirilmesini önlemek için ignoreNonCompileseçenek true olarak ayarlanabilir.
sudeep

bağımlılık kullanırken dikkatli olun: analiz, ben bile 'ejp api3'depedency kullanıyordum ama rapor' kullanılmamış ve ilan edildi 'gösterdi
Akhil S Kamath

Analiz sonuçlarını anlamak için şu cevaba bakın: "Kullanılan beyan edilmemiş bağımlılıklar, gerekli ancak projenizde açıkça bağımlılık olarak bildirilmemiş olanlardır." - stackoverflow.com/questions/4565740/…
Janac Meena

49

Kullanabilirsiniz dependency:analyze -DignoreNonCompile

Bu, kullanılmış bildirilmemiş ve kullanılmayan beyan edilmiş bağımlılıkların bir listesini yazdırır ( kullanılmayan bağımlılık analizi için runtime/ provided/ test/ systemkapsamlarını yok sayarken).

Bunu kullanırken dikkatli olun , kullanılan bazı kütüphaneler kullanılmamış runtimeolarak kabul edilir!

Daha fazla ayrıntı için bu bağlantıya bakın


4
[artı] 1 çalışma zamanı söz için!
gaurav

1
Haklısın, bazı çalışma zamanı bağımlılıkları kullanılmayan olarak kabul edildi, ancak aslında gerekli.
Akıllı Kodlayıcı

43

Diğerlerinin söylediği gibi, bağımlılığı kullanabilirsiniz : hangi bağımlılıkların kullanıldığını ve bildirildiğini, kullanıldığını ve bildirilmediğini veya kullanılmadığını ve bildirildiğini bulmak için hedefi analiz edin . Ayrıca bağımlılık bulabilirsiniz : analyze-dep-mgt , bağımlılık yönetiminizdeki uyumsuzlukları aramak için yararlıdır.

İstenmeyen doğrudan bağımlılıkları POM'nizden kaldırabilirsiniz, ancak bunlar üçüncü taraf kavanozlar tarafından tanıtıldıysa, <exclusions>etiketleri üçüncü taraf kavanozları hariç tutmak için bir bağımlılıkta kullanabilirsiniz ( ayrıntılar ve bazı tartışmalar için Bağımlılık Hariç Tutma bölümüne bakın ) . Ortak bağımlılığı Bahar bağımlılığından hariç tutan bir örnek:

<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) Soruna yorum yaparken Jonnyzzz eklentisini kullandım. Güzel eklenti, IntelliJ 2016.1.3
Benj

34

Maven Dependency Plugin'e baktınız mı ? Bu sizin için bir şey kaldırmaz, ancak analizi kendiniz yapmanızı sağlayan araçlar vardır. Özellikle düşünüyorum

mvn dependency:tree

1
Mükemmel - teşekkürler ("temiz bağımlılıklar" için arama tuttu ve temiz eklentisi atma oldu gibi ne aradığını bulamadım !! ama bu umut verici görünüyor .. mvn bağımlılık: analiz)

14

Benzer bir sorun yaşadım ve benim için bağımlılıkları ortadan kaldıran bir senaryo yazmaya karar verdim. Bunu kullanarak, bağımlılıkların yarısından fazlasını kolayca uzaklaştırdım.

http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html


2
Bu komut dosyasının kullanılmadığını unutmayın mvn dependency:analyze. Sadece her bağımlılığı kaldırmaya çalışır ve çalışıp mvn installçalışmadığını kontrol eder .
dieter
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.