继承子标记中的Gradle插件



我想避免冗余,因此我得到了一个"共享"项目,其中包含这样的看起来像这样:

plugins {
    id "org.flywaydb.flyway" version "4.2.0"
}
repositories {
    mavenCentral()
    jcenter()
}
apply plugin: "java"
dependencies {
    compile "commons-io:commons-io:2.4"
    // ...
}

然后,我还有常规项目,可以从我的共享项目中继承编译依赖项:

apply plugin: "java"
repositories {
    mavenCentral()
    jcenter()
}
dependencies {
    compile project(":shared")
    testCompile project(":shared")
}

有什么办法可以使我的常规项目继承插件块或实际插件?

不是 sashit 这样。在我看来,您要尝试做的事情可以通过配置root项目的子标记来实现。基本上在您的root build.gradle中(将要配置您的root项目的脚本(您可以写:

subprojects {
  // configuration
}

您可能可以摆脱您的共享项目,并在Root Project的build.gradle

中将其放在
plugins {
  id "org.flywaydb.flyway" version "4.2.0" apply false
}
subprojects {    
    repositories {
        mavenCentral()
        jcenter()
    }
    apply plugin: "java"
    apply plugin: "org.flywaydb.flyway"
    dependencies {
        compile "commons-io:commons-io:2.4"
        // ...
    }
}

这样,将使用相同的封闭方式配置所有子标题 - 这等效于将subprojects块中的所有内容复制到您的单个子标题的build.gradle文件。优于初始解决方案的优势在于能够应用插件,配置扩展,您通常可以做的一切。

作为旁注,您不需要repositories中的jcenter()mavenCentral - jCentermavenCentral的超集,并且是首选的一个

最新更新