У мене є великий проект Maven з багатьма модулями та багатьма pom.xml
файлами. Проект змінився, і я підозрюю, що помпон містить деякі непотрібні залежності. Чи є команда, яка видаляє непомічені залежності від пом?
У мене є великий проект Maven з багатьма модулями та багатьма pom.xml
файлами. Проект змінився, і я підозрюю, що помпон містить деякі непотрібні залежності. Чи є команда, яка видаляє непомічені залежності від пом?
Відповіді:
Maven залежностей плагін допоможе, особливо dependency:analyze
цілі:
dependency:analyze
аналізує залежності цього проекту та визначає, які: використовуються та декларуються; використані та незадекларовані; невикористані та задекларовані.
Ще одна річ, яка може допомогти здійснити очищення, - це звіт про конвергенцію залежності від модуля звіти про проект Maven Project Reports .
ignoreNonCompile
параметр може бути встановлено на true.
Можна використовувати dependency:analyze -DignoreNonCompile
Це буде друкувати список використовуваних неоголошені і невикористовувані оголошені залежностей (ігноруючи при цьому runtime
/ provided
/ test
/ system
областях для аналізу невикористаних залежностей.)
Будьте обережні , використовуючи це, деякі бібліотеки, які використовуються в runtime
, вважаються невикористаними!
Як уже говорили інші, ви можете використовувати залежність: проаналізуйте мету, щоб знайти, які залежності використовуються та оголошуються, використовуються та невизначаються, або не використовуються та оголошуються. Ви також можете знайти залежність: analy-dep-mgt корисно шукати невідповідності у вашому розділі залежності.
Ви можете просто видалити небажані прямі залежності зі свого POM, але якщо вони введені сторонніми банками, ви можете використовувати <exclusions>
теги в залежності, щоб виключити сторонні банки ( для деталей та деяких обговорень див. Розділ під назвою Виключення залежностей ) . Ось приклад, що виключає журнал обміну кодами з залежності від 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>
Ви подивилися плагін Maven Dependency ? Це не видалить матеріали для вас, але має інструменти, які дозволять вам робити аналіз самостійно. Я особливо думаю про це
mvn dependency:tree
У мене були подібні проблеми і вирішили написати сценарій, який знімає для мене залежності. Використовуючи це, я отримав понад половину залежностей досить легко.
http://samulisiivonen.blogspot.com/2012/01/cleanin-up-maven-dependitions.html
mvn dependency:analyze
. Він просто намагається усунути кожну залежність і перевіряє, чи mvn install
працює.