Mam duży projekt Maven z wieloma modułami i wieloma pom.xml
plikami. Projekt się zmienił i podejrzewam, że pom zawiera niepotrzebne zależności. Czy istnieje polecenie, które usuwa wszelkie nieużywane zależności z pom?
Mam duży projekt Maven z wieloma modułami i wieloma pom.xml
plikami. Projekt się zmienił i podejrzewam, że pom zawiera niepotrzebne zależności. Czy istnieje polecenie, które usuwa wszelkie nieużywane zależności z pom?
Odpowiedzi:
Maven Zależność Plugin pomogą, zwłaszcza dependency:analyze
cel:
dependency:analyze
analizuje zależności tego projektu i określa, które są: używane i deklarowane; używane i niezgłoszone; nieużywany i zadeklarowany.
Kolejną rzeczą, która może pomóc w przeprowadzeniu czyszczenia, jest raport o zbieżności zależności z wtyczki Maven Project Info Reports .
ignoreNonCompile
opcję można ustawić na wartość true.
Możesz użyć dependency:analyze -DignoreNonCompile
Spowoduje to wydrukowanie listy używanych niezadeklarowanych i nieużywanych zadeklarowanych zależności (przy ignorowaniu zakresów runtime
/ provided
/ test
/ system
dla nieużywanej analizy zależności).
Zachowaj ostrożność podczas korzystania z niej, niektóre używane biblioteki runtime
są uważane za nieużywane!
Jak powiedzieli inni, możesz użyć zależności: przeanalizuj cel, aby dowiedzieć się, które zależności są używane i deklarowane, używane i niezadeklarowane lub nieużywane i deklarowane. Może się również przydać zależność: analiza-dep-mgt przydatna do wyszukiwania niezgodności w sekcji zarządzania zależnością.
Możesz po prostu usunąć niechciane bezpośrednie zależności z POM, ale jeśli są one wprowadzane przez słoiki stron trzecich, możesz użyć <exclusions>
znaczników w zależności, aby wykluczyć słoiki stron trzecich (zobacz sekcję zatytułowaną Wykluczenia zależności, aby uzyskać szczegółowe informacje i trochę dyskusji) . Oto przykład wykluczający wspólne logowanie z zależności Spring:
<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>
Czy przeglądałeś wtyczkę Maven Dependency ? Nie usunie to dla ciebie rzeczy, ale ma narzędzia, które pozwolą ci przeprowadzić analizę samodzielnie. Mam na myśli szczególnie
mvn dependency:tree
Miałem podobny problem i postanowiłem napisać skrypt, który usunie dla mnie zależności. Korzystając z tego dość łatwo pozbyłem się ponad połowy zależności.
http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependencies.html
mvn dependency:analyze
. Po prostu próbuje usunąć każdą zależność i sprawdza, czy mvn install
działa.