Исключение транзитивных зависимостей с помощью Gradle
В Gradle при использовании плагина приложения для создания файла jar можно столкнуться с транзитивными зависимостями, которые вы можете исключить. Для этого можно использовать метод исключения.
Поведение исключения по умолчанию
Изначально была предпринята попытка исключить все экземпляры org.slf4j:slf4j- log4j12, используя следующий код:
configurations { runtime.exclude group: "org.slf4j", name: "slf4j-log4j12" }
Однако это привело к исключению всех артефактов org.slf4j, включая slf4j-api.
Настройка исключений
Чтобы уточнить исключение, можно использовать свойства группы и модуля:
configurations { runtime.exclude group: "org.slf4j", module: "slf4j-log4j12" }
Этот подход успешно исключает только org.slf4j:slf4j-log4j12, не затрагивая другие зависимости slf4j.
Исключить из отдельной зависимости
Если исключение желательно для конкретной зависимости, можно использовать следующий синтаксис:
dependencies { compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') { exclude group: "org.slf4j", module: "slf4j-log4j12" } }
Ограничения метода Exclude
Важно отметить, что хотя в исключениях можно указать произвольные свойства, это не допускается при исключении из отдельных зависимостей. Например, следующий код завершится ошибкой:
dependencies { compile ('org.springframework.data:spring-data-hadoop-core:2.0.0.M4-hadoop22') { exclude group: "org.slf4j", name: "slf4j-log4j12" } }
со следующим сообщением об ошибке:
No such property: name for class: org.gradle.api.internal.artifacts.DefaultExcludeRule
Понимание модулей Gradle
В Gradle свойство модуля соответствует идентификатору артефакта Maven. Поэтому, чтобы определить модуль конкретного артефакта Maven, проверьте его идентификатор артефакта. Например, артефакт Maven org.slf4j:slf4j-log4j12 будет иметь модуль Gradle slf4j-log4j12.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3