用Gradle动态设置分类器
我正在尝试建立我们的持续集成来构建功能分支。我已经修改了Gradle插件,将我们的库项目工件上传到Nexus,使用分支名称作为分类器。但是,我找不到一种方法来更改依赖于这些库的项目以动态设置分类器 我试过了用Gradle动态设置分类器,gradle,continuous-integration,Gradle,Continuous Integration,我正在尝试建立我们的持续集成来构建功能分支。我已经修改了Gradle插件,将我们的库项目工件上传到Nexus,使用分支名称作为分类器。但是,我找不到一种方法来更改依赖于这些库的项目以动态设置分类器 我试过了 project.configurations.all { config -> conf.resolutionStrategy.eachDependency { DependencyResolveDetails details -> details.useT
project.configurations.all { config ->
conf.resolutionStrategy.eachDependency { DependencyResolveDetails details ->
details.useTarget("${details.requested.group}:${details.requested.name}:${details.requested.version}:${branch_name}")
println "${details.target}"
}
}
但是println显示目标没有用分类器更新。如果我动态地更改名称而不是使用分类器,它就会工作
是否可以动态设置分类器?如果可以,如何设置
前面已经回答了一个类似的问题,建议按照我一直尝试的方式进行:
似乎您需要使用
DependencyResolveDetails\useVersion
而不是DependencyResolveDetails\useTarget
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
String branch_name = "someBranchName"
def newDependency = "$details.requested.group:$details.requested.name:$details.requested.version:$branch_name"
println "Overriding details: $details --> $newDependency"
details.useVersion newDependency
}
}
此外,您可能希望添加一些检查,以便不覆盖所有依赖项,上述代码还将替换第三方依赖项的分类器。因此,如果将gson
作为依赖项,您可能会看到如下错误
Could not resolve all dependencies for configuration ':compile'.
> Could not find com.google.code.gson:gson:com.google.code.gson:gson:2.3.1:someBranchName.
Searched in the following locations:
https://repo1.maven.org/maven2/com/google/code/gson/gson/com.google.code.gson:gson:2.3.1:someBranchName/gson-com.google.code.gson:gson:2.3.1:someBranchName.pom
https://repo1.maven.org/maven2/com/google/code/gson/gson/com.google.code.gson:gson:2.3.1:someBranchName/gson-com.google.code.gson:gson:2.3.1:someBranchName.jar
Required by:
com.example.stackoverflow.q34983255:1.0-SNAPSHOT