我需要获取具有不同版本项目的两个jar的路径。当前正在构建的版本和我明确指定的先前版本。获取当前正在构建的jar的路径不是问题。但是,当我尝试依赖远程存储库中的项目的某些先前版本时,就会出现问题。我这样声明自定义配置
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,而不是远程的jar。
我发现evaluatedVersion
小于项目的当前本地版本就是这种情况。例如,如果我将本地版本更改为较小的值,以使evaluatedVersion
较大,那么一切都很好,并且Gradle需要从远程存储库下载jar。
所以看来问题是Gradle不想下载与我正在构建的工件相同的工件,但要下载较小的版本。我该如何强迫他这样做?
到目前为止,我已经尝试过resolutionStrategy.force
,但是它似乎不起作用,因为Gradle似乎没有检测到任何版本冲突
PS :我可以看到打印以下内容时依赖项本身是正确的
cmp.allDependencies.forEach {
println(it.name)
println(it.version)
}
输出为(我没有提供真实的项目名称和版本)
{project.name}
{evaluatedVersion}
在这里,我得到了所需的版本,该版本仅在远程版本中存在。但是当解析为实际的jar时,我得到了当前正在构建的jar
cmp.forEach {
println(it.name)
}
输出为{project.name}-{project.version}.jar
。不管我提供了哪个evaluatedVersion
,每次都会得到当前的项目版本jar