Java Gradle中的依赖排除

Java Gradle中的依赖排除,java,gradle,dependencies,dependency-management,Java,Gradle,Dependencies,Dependency Management,对于rootProj,我希望它既不依赖于模块_1,也不依赖于模块_2。 但我对模块2有依赖性。 为什么? 我不知道这是不是真的,但看起来依赖项解析程序只计算commonSubProj的依赖项树一次——这只是在SubProjA解析的情况下,然后在rootProj中处理“已解析”的commonSubProj依赖项时,将“已解析”的commonSubProj依赖项(带排除的模块_1)传递给subProjB 我希望分别解析每个子项目/依赖子树(即使它们是乘法的),将它们解析为脚本中声明的排除项,然后在返

对于rootProj,我希望它既不依赖于模块_1,也不依赖于模块_2。 但我对模块2有依赖性。 为什么?

我不知道这是不是真的,但看起来依赖项解析程序只计算commonSubProj的依赖项树一次——这只是在SubProjA解析的情况下,然后在rootProj中处理“已解析”的commonSubProj依赖项时,将“已解析”的commonSubProj依赖项(带排除的模块_1)传递给subProjB

我希望分别解析每个子项目/依赖子树(即使它们是乘法的),将它们解析为脚本中声明的排除项,然后在返回最终结果之前进行“求和”/“合并”/“展平”。我知道这会更慢,但对开发人员来说更具可读性和确定性。

如果两个A&B子项目都用POMs发布到maven,然后由rootProj使用,它会以同样的方式工作吗

project(':commonSubProj') {
    dependencies {
        implementation('thirdPartyGroup:Module_1:1.0')
        implementation('thirdPartyGroup:Module_2:1.0')
    }
}

project(':subProjA') {
    dependencies {
        implementation(project(':commonSubProj'))
    }
}

project(':subProjB') {
    dependencies {
        implementation(project(':commonSubProj'))
    }
}

project(':rootProj') {
    dependencies {
        implementation(project(':subProjA')) {
            exclude group: 'thirdPartyGroup', module: 'Module_1'
        }
        implementation(project(':subProjB')) {
            exclude group: 'thirdPartyGroup', module: 'Module_2'
        }
    }
}