Czy istnieje prosty sposób na usunięcie nieużywanych zależności z maven pom.xml?
277
Mam duży projekt Maven z wieloma modułami i wieloma pom.xmlplikami. 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?
Jeśli używasz IntelliJ, zobacz to: jonnyzzz.com/blog/2013/05/13/… W przypadku martwego linku: wtyczka Jonnyzzz Dependencies
Benj
3
@Benj Próbowałem użyć tej wtyczki jonnyzz i było to bezużyteczne. Przez większość czasu nie znajdzie żadnych nieużywanych zależności, a czasami, gdy to zrobi, usunie zależności ze ścieżki klasy, a nie z pliku build.gradle. Nie mogę nawet znaleźć odpowiedniego dokumentu wyjaśniającego, jak ta wtyczka faktycznie działa.
vaibhav.g
@ vaibhav.g dzięki za aktualizację. Wygląda na to, że wszystko się zmieniło od 2016 roku.
Uważaj na zależność: analizuj, niektóre biblioteki używane w czasie wykonywania są uważane za nieużywane.
Nereis,
27
Aby zapobiec zgłaszaniu środowiska wykonawczego i podanych zależności jako nieużywanych, ignoreNonCompileopcję można ustawić na wartość true.
sudeep
bądź ostrożny podczas korzystania z zależności: analizuj, nawet ja używałem „ejp api3'depedency”, ale raport pokazał, że był „nieużywany i zadeklarowany”
Akhil S Kamath
Aby zrozumieć wyniki analizy, zapoznaj się z odpowiedzią: „Użyte niezadeklarowane zależności to te, które są wymagane, ale nie zostały wyraźnie zadeklarowane jako zależności w projekcie”. - stackoverflow.com/questions/4565740/…
Janac Meena
49
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/ systemdla nieużywanej analizy zależności).
Zachowaj ostrożność podczas korzystania z niej, niektóre używane biblioteki runtimesą uważane za nieużywane!
[plus] 1 za wzmiankę o środowisku uruchomieniowym!
gaurav
1
Masz rację, niektóre zależności środowiska wykonawczego są uznawane za nieużywane, ale w rzeczywistości potrzebne.
Smart Coder
43
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:
(IntelliJ) Użyłem wtyczki Jonnyzzz, zgodnie z komentarzem do pytania. Ładna wtyczka, działa dobrze z IntelliJ 2016.1.3
Benj
34
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
Excellent - dzięki (nie mógł znaleźć to, czego szukałem jak Ciągle szukając „czystych” zależnościami i rzucał się na czystej wtyczki !! ale to wygląda obiecująco .. mvn zależność: analizować)
14
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.
Odpowiedzi:
Maven Zależność Plugin pomogą, zwłaszcza
dependency:analyze
cel: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 .
źródło
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!Aby uzyskać więcej informacji, zapoznaj się z tym linkiem
źródło
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:źródło
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
źródło
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
źródło
mvn dependency:analyze
. Po prostu próbuje usunąć każdą zależność i sprawdza, czymvn install
działa.