将模块依赖性替换为项目依赖性-Gradle 6.4

时间:2020-05-16 11:10:04

标签: java gradle dependency-management buildship

我正在尝试将Gradle项目从5.4更新到6.4,并且依赖替换不再起作用。

我正在使用Eclipse 4.15.0和Buildship 3.1.3。

我们有一个名为BUILD的根项目,其中包含gradle配置,然后有许多(15+)个子项目包含Java代码。 依赖项被声明为jar依赖项,如下所示:

implementation ( group: "com.company", name: "COMMON", configuration: "implementation", version: "latest.integration" )
testImplementation ( group: "com.company", name: "COMMON", configuration: "testImplementation", version: "latest.integration" )

但是如果项目签出了,我想用签出的项目自动替换jar依赖项。 为此,在根项目的settings.gradle中声明每个项目,例如:

ext.projectNames = 
['COMMON', 'CLIENT', 'SERVER', 'RESTAPI' ]

projectNames.each { name ->
    if (file("../"+name).exists()) {
        println "project $name is a project in this build"
        includeFlat name
    } else {
        println "project $name is a jar in this build"
    }
}

每个声明的jar依赖项都应通过应用以下块来代替项目:

    configurations.all {
        resolutionStrategy.dependencySubstitution.all { DependencySubstitution dependency ->
            if (dependency.requested instanceof ModuleComponentSelector && dependency.requested.group == "com.company") {
                def targetProject = findProject(":${dependency.requested.module}")
                if (targetProject != null) {
                    println "Using project ${targetProject} in ${project}"
                    dependency.useTarget targetProject
                }
            }
        }
    }

依赖替换块直接来自gradle文档(https://docs.gradle.org/current/userguide/resolution_rules.html#sub:conditional_dependency_substitution)。

如果我不应用替换,gradle会找到子项目的所有jar,并且所有内容都会编译。

我尝试将替换应用于根项目,所有项目或除根项目之外的所有项目。

所有发生的事情是jar不再被列为依赖项,但项目也没有被列为依赖项,这意味着代码不再编译。

我错过了什么,为什么依赖替换不再起作用?

0 个答案:

没有答案
相关问题