Мне нужно получить пути к двум банкам с разными версиями моего проекта. Тот, который в настоящее время строит, и одна предыдущая версия, которую я указываю явно. Получить путь к текущей строительной банке не проблема. Но есть проблема, когда я пытаюсь зависеть от какой-то предыдущей версии моего проекта, которая находится в удаленном хранилище. Я объявляю пользовательскую конфигурацию примерно так
val versionToCompare: String? by project
val evaluatedVersion = versionToCompare ?: project.version
val cmp by configurations.creating
dependencies {
cmp("${project.group}:${project.name}:$evaluatedVersion") {
isTransitive = false
}
}
evaluatedVersion
предоставляется через атрибуты командной строки.
Проблема в том, что эта зависимость разрешается в локально построенном jar, а не в удаленном.
Я понял, что это тот случай, когда evaluatedVersion
меньше текущей локальной версии моего проекта. Если я, например, изменю локальную версию на какое-то меньшее значение, чтобы evaluatedVersion
было больше, тогда все в порядке, и Gradle загружает необходимый jar из удаленного репозитория.
Так что, похоже, проблема в том, что Gradle не хочет загружать тот же артефакт, что и у меня, но с уменьшенной версией. Как заставить его сделать это?
До сих пор я пробовал resolutionStrategy.force
, но, похоже, он не работает, поскольку Gradle, похоже, не обнаруживает конфликтов версий
PS : Я вижу, что сама зависимость корректна при печати следующего
cmp.allDependencies.forEach {
println(it.name)
println(it.version)
}
Вывод (я не предоставляю реальное название проекта и версию)
{project.name}
{evaluatedVersion}
Здесь я получаю нужную версию, которая присутствует только на пульте. Но когда это разрешено до фактической банки, я получаю тот, который в настоящее время строит
cmp.forEach {
println(it.name)
}
Выход составляет {project.name}-{project.version}.jar
. Неважно, какой evaluatedVersion
я предоставил, я получаю jar текущей версии проекта каждый раз