Есть ли простой способ удалить неиспользуемые зависимости из maven pom.xml? - PullRequest
230 голосов
/ 05 октября 2009

У меня большой проект Maven с многочисленными модулями и pom.xmls. и проект изменился настолько, что я уверен, что у помов должны быть некоторые ненужные зависимости в них. Кто-нибудь знает, есть ли команда, которую вы можете запустить, чтобы удалить любые бессмысленные зависимости из pom?

Ответы [ 5 ]

190 голосов
/ 05 октября 2009

Плагин Maven Dependency поможет, особенно цель dependency:analyze:

dependency:analyze анализирует зависимости этого проекта и определяет, какие из них: использованы и объявлены; использованный и необъявленный; неиспользованный и объявленный.

Еще одна вещь, которая может помочь выполнить некоторую очистку, - это Отчет о сходимости зависимостей из Плагин Maven Project Info Reports Reports .

37 голосов
/ 05 октября 2009

Как уже говорили другие, вы можете использовать зависимость : проанализировать цель , чтобы найти, какие зависимости используются и объявляются, используются и не декларируются, или не используются и объявляются. Вы также можете найти dependency: analysis-dep-mgt полезной для поиска несоответствий в вашем разделе dependencyManagement.

Вы можете просто удалить нежелательные прямые зависимости из вашего 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>
31 голосов
/ 05 октября 2009

Вы смотрели на Maven Dependency Plugin ? Это не удалит вещи для вас, но есть инструменты, которые позволят вам сделать анализ самостоятельно. Я особенно думаю о

mvn dependency:tree
29 голосов
/ 23 марта 2017

Вы можете использовать dependency:analyze -DignoreNonCompile

Будет выведен список зависимостей used undeclared и unused declared (при этом игнорируются области runtime / provided / test / system для неиспользуемого анализа зависимостей.)

Но будьте осторожны , при этом некоторые библиотеки, используемые на runtime, считаются неиспользованными!

14 голосов
/ 05 января 2012

У меня была похожая проблема, и я решил написать сценарий, который удаляет зависимости для меня. Используя это, я довольно легко избавился от половины зависимостей.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...