Gradle 子目录中项目的配置

Gradle 子目录中项目的配置,gradle,Gradle,我有一个Gradle多项目构建,如下所示: rootProject build.gradle settings.gradle shared/ SharedLib SharedLib2 plugins/ FirstPlugin SecondPlugin 我想将目录中作为依赖项共享的所有项目添加到插件中的所有项目中 更一般地说:如何按目录配置子项目 settings.gradle的内容: include

我有一个Gradle多项目构建,如下所示:

rootProject
    build.gradle
    settings.gradle
    shared/
        SharedLib
        SharedLib2
    plugins/
        FirstPlugin
        SecondPlugin
我想将目录中作为依赖项共享的所有项目添加到插件中的所有项目中

更一般地说:如何按目录配置子项目

settings.gradle的内容:

include 'plugins:FirstPlugin', 'plugins:SecondPlugin', 'shared:SharedLib', 'shared:SharedLib2'
build.gradle的内容:

task wrapper(type: Wrapper) { gradleVersion = "2.1" }

allprojects{ apply plugin:"java" }
subprojects {
    group = "eu.test.myGroup"
    repositories { mavenCentral() }
    dependencies { testCompile "junit:junit:4.11" }
}

将此添加到build.gradle实现了我想要实现的目标:

// Define what's a plugin and what's a shared library by directory paths.
// Ignore empty projects
def plugins = subprojects.findAll{ it.path.contains("plugins") && hasSrc(it) }
def sharedLibs = subprojects.findAll{ it.path.contains("shared") && hasSrc(it)}

/** Checks whether a project has a source directory */
def hasSrc(proj){
    return new File(proj.projectDir, "src").exists()
}

// Configure the plugins to depend on the shared libraries at compile time
configure(plugins) { dependencies { sharedLibs.each{compile it} } }