Сбой сборки Gradle, если транзитивная зависимость используется напрямую? - PullRequest
0 голосов
/ 07 февраля 2019

я ищу способ завершить сборку gradle, если мой код напрямую использует (поэтому импортирует) транзитивную зависимость.

что я имею в виду, если мой проект имеет (компилировать) зависимость от модуля A, имодуль A зависит от B (поэтому B находится в моих транзитивных зависимостях и доступен на моем пути к классам времени выполнения), и мой код напрямую импортирует и использует классы из B, я хочу, чтобы моя сборка не удалась.

вот плагин maven, который делаетчто я хочу - https://github.com/Scout24/illegal-transitive-dependency-check - но я не могу найти Gradle один?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Я думаю, что 2 плагина ниже могут быть тем, что вы ищете.

  1. https://github.com/wfhartford/gradle-dependency-analyze

    Из README :

    Этот плагин пытается повторить функциональность mavenПлагин для зависимостей анализирует цели, которые не дают сборки, если зависимости объявлены, но не используются или не используются, но не объявлены.

  2. https://github.com/nebula-plugins/gradle-lint-plugin

    На Неиспользуемое правило зависимости вики-страница:

    Продвигает транзитивные зависимости, которые используются вашим кодом непосредственно для явных зависимостей первого порядка

Я должен сказать, что сам не использовал ни одну из них, нопохоже, они решают вашу проблему.

0 голосов
/ 07 февраля 2019

Я думаю, что вы хотите использовать плагин библиотеки Java и настройки API / реализации.

Для устаревшего Java-плагина вы можете сделать

dependencies {
   compile('group:module-b:1.0') { transitive = false }
} 

Это заставит вас явно объявить транзитивные зависимости модуля b, если вам нужно их использовать.

Примечание: вы, вероятно, получите большое количество ClassNotFoundException, используя module-b во время выполнения, так как теперь в вашем classpath отсутствуют jar-файлы.Так что это может быть лучше

dependencies {
   compile('group:module-b:1.0') { transitive = false }
   runtime 'group:module-b:1.0'
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...