我正在尝试建立持续集成来构建功能分支。我修改了我们的Gradle插件,将我们的库项目工件上传到Nexus,并以分支名称作为分类器。但是,我无法找到一种方法来更改依赖于这些库的项目来动态设置分类器。
我试过
(function() {
foo = window.foo || {};
//this will not error
foo.helloWorld = function() {
console.log('helloWorld()');
};
foo.helloWorld();
var initFunction = function() {
console.log('init()');
};
//this will no longer error
initFunction();
foo.init = initFunction;
})();
但println显示目标尚未使用分类器进行更新。如果我动态更改名称而不是使用分类符,则可以正常工作。
是否可以动态设置分类器,如果可以,如何设置分类器?
之前已经回答了一个类似的问题,建议按照我一直尝试的方式进行: https://stackoverflow.com/a/22780023/3209486
答案 0 :(得分:0)
似乎您需要使用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