Я хотел бы контролировать, какие из моих зависимостей в многопроектной 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
должен быть в classpath для компиляции, поэтому добавьте:
dependencies {
export project(path: ':A', configuration:'export')
}
Это дает желаемые результаты, A.jar
и B.jar
не находятся в пути класса, но C.jar
находится в classpath для компиляции.
Я не уверен, что это "gradle" способ делать вещи. Для настройки транзитивности я бы предпочел указать атрибут или закрытие конфигурации для записей зависимостей в проекте A, а не использовать другую конфигурацию "экспорта".
Возможно ли это для файловых зависимостей, или есть другой способ добиться этого?