У меня есть два проекта, определенные в Gradle, projectA и projectB, определенные как мультипроект.Исключить транзитивную JAR-зависимость в Gradle
ProjectA имеет зависимость от spring1-beans.jar Между тем ProjectB имеет зависимость от ProjectA.
Проблема, которую я получил, заключается в том, что ProjectB также имеет зависимость от spring3-beans, поэтому мне нужно исключить банку Spring1, иначе она будет использовать неправильную версию Spring.
Gradle конф файл для Projecta выглядит следующим образом:
dependencies {
compile files('lib/spring-beans.jar')
}
и конф для ProjectB:
dependencies {
compile project(':projects:projectA') {
exclude files('lib/spring-beans.jar')
}
}
К сожалению, это делает не работу. Gradle выдает следующее сообщение об ошибке:
Could not find method exclude() for arguments [file collection] on project
Я также попытался с модулем с аналогичным выходом:
The description 'lib/spring-beans.jar' is invalid
Примечание:
- Я использую баночки зависимости, так как проект переносится из Ant, поэтому я не могу переключиться на удаленный репозиторий, хотя я открыт для предложений.
Я не знаю, как исключить эту транзитивную зависимость, но теперь вы настроили на * исключить * замыкание на * проект * экземпляр. Это должно быть 'compile (project (': projects: projectA')) {exclude files ('lib/spring-beans.jar')}', чтобы настроить его для 'configuration' (обратите внимание на parens). Почему бы вам не переключиться на удаленный репозиторий? Почему это невозможно? – Opal
@ Opal Я попробовал скобки, но не повезло. Я не могу использовать дистанционное репо на данный момент, потому что это потребует изменений в системе сборки, и мы хотели бы сделать переход по этапам. Итак, первая фаза с не удаленными репозиториями ... –
Я имел в виду, что упомянутый синтаксис исправляет эту ошибку: * Не удалось найти метод exclude() для аргументов [сбор файлов] в проекте *, не исключая зависимости. – Opal