Ответ 1
ОБНОВЛЕНИЕ: 28-06-2016: поддержка Android для неиспользуемой зависимости
В июне 2017 года они выпустили
4.0.0 version
и переименовали имя корневого проекта"gradle-lint-plugin"
в"nebula-lint-plugin"
. Они также добавили поддержку Android для неиспользованная-зависимость.
В мае 2016 года Gradle реализовал gradle плагин lint для поиска и удаления нежелательной зависимости
gradle Плагин Lint: полная документация
Плагин Gradle Lint - это подключаемый и настраиваемый инструмент для обработки выявление и отчетность по шаблонам злоупотребления или Gradle скрипты и связанные файлы.
Этот плагин имеет различные правила. Неиспользованное правило зависимостей является одним из них. Он имеет 3 специфические характеристики.
- Удаляет неиспользуемые зависимости.
- Продвигает транзитивные зависимости, которые используются непосредственно вашим кодом к явным зависимостям первого порядка.
- Переводит зависимости в "правильную" конфигурацию.
Чтобы применить правило, добавьте:
gradleLint.rules += 'unused-dependency'
Подробности Неиспользованное правило зависимостей указано в последней части.
Применение Gradle lint плагина:
buildscript { repositories { jcenter() } }
plugins {
id 'nebula.lint' version '0.30.2'
}
В качестве альтернативы:
buildscript {
repositories { jcenter() }
dependencies {
classpath 'com.netflix.nebula:gradle-lint-plugin:latest.release'
}
}
apply plugin: 'nebula.lint'
Определите, какие правила вы хотите использовать:
gradleLint.rules = ['all-dependency'] // add as many rules here as you'd like
Для сборки предприятия мы рекомендуем определить правила lint в init.gradle script или в Gradle script, который включается с помощью Gradle с помощью механизма.
Для проектов с несколькими модулями рекомендуется применять плагин в блоке allprojects:
allprojects {
apply plugin: 'nebula.lint'
gradleLint.rules = ['all-dependency'] // add as many rules here as you'd like
}
Подробности Неиспользованное правило зависимости указано в этой части
Чтобы применить правило, добавьте:
gradleLint.rules += 'unused-dependency'
Правило проверяет скомпилированные двоичные файлы, исходящие из вашего проекта исходных наборов, ища ссылки на классы и сопоставляет эти ссылки с зависимостями, которые вы указали в ваш блок зависимостей.
В частности, правило выполняет следующие изменения зависимостей:
1) Удаляет неиспользуемые зависимости
- Банки в семейном стиле, такие как com.amazonaws: aws-java-sdk удаляются, так как они не содержат кода
2) Продвигает транзитивные зависимости, которые напрямую используются вашим кодом для явных зависимостей первого порядка
- У этого есть побочный эффект распада баров семейного стиля как com.amazonaws: aws-java-sdk в те части, которые вы на самом деле используя и добавляя их как зависимости первого порядка
3) Перемещает зависимости к "правильной" конфигурации
- Webjars перемещаются в конфигурацию времени выполнения
- Ящики, которые не содержат классов И контент вне META-INF, являются перемещен во время выполнения
- 'xerces', 'xercesImpl', 'xml-apis' всегда должны быть областями среды выполнения
- Поставщики услуг (банки, содержащие META-INF/services), например mysql-connector-java перемещаются во время выполнения, если нет доказуемого время компиляции
- Зависимости перемещаются в конфигурацию с самым высоким исходным кодом возможное. Например, "junit" переносится на testCompile, если существует явная зависимость от него в основном наборе источников (редко).
ОБНОВЛЕНИЕ: Предыдущие плагины
Для вашей любезной информации я хочу поделиться с предыдущими плагинами
- gradle плагин, который находит неиспользуемые зависимости, объявленный и транзитивный com.github.nullstress.dependency-analysis
Но последняя версия 1.0.3 создана 23 декабря 2014 года. После этого обновления нет.
N.B: Многие наши инженеры путаются о этом плагине, поскольку они обновил только номер версии ничего.