如何在多项目 Gradle 中为子项目定义不同的依赖关系? (Java)

How to define different dependencies for subprojects in a multi-projects Gradle ? (Java)

我有一个包含不同子项目的分发项目,我想完成以下任务:

我要放

     protoc {
         artifact = 'com.google.protobuf:protoc:3.5.0'
     }
     plugins {
         grpc {
             artifact = "io.grpc:protoc-gen-grpc-java:1.7.0"
         }
     }
     generateProtoTasks {
         all()*.plugins {
             grpc {}
         }
     } }
    dependencies {
       compile "com.google.api.grpc:proto-google-common-protos:1.0.0"
       compile "io.grpc:grpc-netty:1.7.0"
       compile "io.grpc:grpc-protobuf:1.7.0"
       compile "io.grpc:grpc-stub:1.7.0"
   }

对于模块 A、B 和 C。

现在我的根中有以下内容build.gradle

subprojects{
    apply plugin: 'java'

    sourceCompatibility = 1.8
    group 'project'
    version '0.0.1-SNAPSHOT'

    jar {
        manifest {
            attributes 'Main-Class': "com.project.${project.name}.App"
        }
        doFirst {
            from { configurations.runtime.collect { it.isDirectory() ? it : zipTree(it) } }
        }
    }

    repositories {
        mavenCentral()
        mavenLocal()
    }

    dependencies {
        testCompile 'junit:junit:4.12'
        testCompile 'org.mockito:mockito-core:1.9.5'
    }
}

所以每个子项目都使用java插件,并且有定义的依赖和jar任务。 我怎样才能只为某些子项目放置第一个块?

我尝试使用 Multi-project Builds - Gradle 中的变量,但我无法在 subprojects 块中访问它。

提前谢谢你。我真的对正确使用 Gradle 很感兴趣,但在简单的 Android/Java 项目之外很难进入它。请随意包含我应该阅读的任何文档:)

编辑:

谢谢。如果我之前没有搜索,我就不会在这里发布。显然我错过了关键字 "subset" 谁会给我你链接的解决方案。

这里描述了一个解决方案:https://discuss.gradle.org/t/configure-only-subset-of-subprojects/5379/3

您可以 运行 配置项目列表。

project.ext {
    subprojectList = subprojects.findAll{
        it.name == 'subprojectA' ||
        it.name == 'subprojectB' ||
        it.name == 'subprojectC'
    }
}
  configure(project.subprojectList) {
    // insert your custom configuration code
}

configure([project(':a'), project(':b'), project(':c')]) {
    // configuration
}