Как использовать только файловые зависимости в Gradle вместо указания groupId:artifactId:versionId
У меня есть следующая запись в моем файле Gradle
dependencies {
compile 'org.A:A:1.0'
}
который загружает 'org.B:B:1.0', потому что это его зависимость.(явно не упоминается в gradle)
В моем проекте я хочу использовать A* и B*, которые представляют собой тени (измененное пространство имен) для A и B соответственно.
Теперь я определил зависимость для A* как
dependencies{
compile file('libs/A*.jar')
}
Но этот по-прежнему скачивает "org.B: B: 1.0"
Как подключить Gradle к использованию файла ('libs / B*.jar')?
2 ответа
Первое решение, которое приходит на ум, состоит в том, чтобы исключить переходную зависимость compile 'org.A:A:1.0'
Это работает так:
dependencies {
compile('org.A:A:1.0') {
exclude 'org.B:B:1.0'
}
}
Посмотрите Руководство пользователя Gradle для получения более подробной информации по этому вопросу.
Как упоминалось в комментариях, файловые зависимости не могут иметь транзитивных зависимостей. Так A*.jar
либо имеет содержимое B.jar
как-то вкатился в него, или у вас B.jar
на пути сборки где-то еще.
Файловые зависимости обычно являются последним средством, они не участвуют в разрешении конфликтов; вам нужен репозиторий зависимостей, такой как maven
или же ivy
для этого.