Gradle, похоже, не предлагает чистого способа сделать это из коробки. Например (Kotlin DSL), получение ссылки на фактическую зависимость не приводит к разрешенной версии:
val commonsLangVersion by extra { listOf("3.9", "3.10") }
dependencies {
implementation("org.apache.commons:commons-lang3:$commonsLangVersion")
}
configurations.compileClasspath.get().allDependencies.find { it.name == "commons-lang3" }?.let {
println(it)
}
Результаты в:
$ ./gradlew build
> Configure project :
DefaultExternalModuleDependency{group='org.apache.commons', name='commons-lang3', version='[3.9, 3.10]', configuration='default'}
Итак, единственный способ получить фактическая версия должна разрешить конфигурацию, а затем выполнить некоторые манипуляции с подстрокой на основе имени файла:
val commonsLangVersion by extra { listOf("3.9", "3.10") }
dependencies {
implementation("org.apache.commons:commons-lang3:$commonsLangVersion")
}
val resolvedVersion = configurations.compileClasspath.get().resolve()
.filter { it.name.startsWith("commons-lang3") }[0] // commons-lang3-3.10.jar
.name.substringAfterLast("-") // 3.10.jar
.substringBeforeLast(".") // 3.10
println(resolvedVersion)
tasks.javadoc {
options {
(this as StandardJavadocDocletOptions)
links = listOf(
"https://commons.apache.org/proper/commons-lang/javadocs/api-$resolvedVersion/"
)
}
}