У меня проблема с неверной версией зависимости, используемой сборкой Gradle.Я использую Gradle 4.6.
У меня есть библиотека, которую я разрабатываю, что дает Utils король возможностей.Давайте назовем это utils.jar.Я также разрабатываю другую библиотеку для связи с веб-сервисом.Давайте назовем это network.jar.Затем я разрабатываю проект, в котором мне нужны зависимости network.jar и зависимости utils.jar.Но мне нужна версия utils.jar, которая выше той, которая используется network.jar.
My project
|
|-> network.jar:v1
| |
| |
| -> utils.jar:v1
|
-> utils.jar:v2
Вот build.gradle для сетевой библиотеки
dependencies {
compile "com.mycompany:utils:1"
}
Вотbuild.gradle для моего проекта
dependencies {
compile "com.mycompany:network:1" // pull utils.jar:1
compile "com.mycompany:utils:2" // I need utils.jar:2 in my project
}
С этим в моем проекте, когда я пытаюсь использовать v2 из utils.jar, новый метод, представленный в v2, недоступен.В IntelliJ я вижу utils.jar v2 в classpath, но когда я пытаюсь использовать, например, класс com.mycompany.utils.CollectionUtils, он использует код utils, встроенный в библиотеку network.jar (v1) вместо использования кодаutils v2.
Поэтому я попытался явно удалить utils.jar (v1) из network.jar, пока эта зависимость импортируется в мой проект.build.gradle в моем проекте:
dependencies {
compile("com.mycompany:network:1") {
exclude group: 'com.mycompany', module: 'utils'
}
compile "com.mycompany:utils:2"
}
Но код utils v1 по-прежнему встроен в код network.jar, и именно этот используется вместо v2.
Как можноЯ заставляю Gradle понять, что я хочу использовать utils v2, а не utils v1, которые тянут network.jar?