«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как исключить определенные транзитивные зависимости в Gradle?

Как исключить определенные транзитивные зависимости в Gradle?

Опубликовано 6 ноября 2024 г.
Просматривать:664

How to Exclude Specific Transitive Dependencies in Gradle?

Исключение транзитивных зависимостей с помощью 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