Я хотел бы контролировать, какие из моих зависимостей в многопроектной сборке Java являются транзитивными.Мое текущее решение заключается в настройке конфигурации «экспорта» в корневом проекте:
allprojects {
configurations {
export {
description = 'Exported classpath'
}
compile {
extendsFrom export
}
}
}
Проект A имеет несколько файловых зависимостей:
dependencies {
compile files('A.jar', 'B.jar')
export files('C.jar')
}
Проект B зависит от проекта A, но только C.jar
должно быть на пути к классам для компиляции, поэтому добавьте:
dependencies {
export project(path: ':A', configuration:'export')
}
Это даст желаемые результаты, A.jar
и B.jar
не находятся на пути к классам, но C.jar
находится на пути к классам для компиляции.
Я не уверен, является ли это «нездоровым» способом ведения дел.Чтобы настроить транзитивность, я бы предпочел указать атрибут или закрытие конфигурации для записей зависимостей в проекте A вместо использования другой конфигурации «экспорта».
Возможно ли это для файловых зависимостей или есть другой способ добиться этого?