子项目中继承gradle插件

问题描述 投票:0回答:1

我想避免冗余,因此我得到了一个“共享”项目,其中包含如下内容:

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")
}

有什么方法可以让我的常规项目也继承插件块或实际插件吗?

gradle flyway subproject
1个回答
34
投票

不是继承。在我看来,您想要做的事情可以通过从根项目配置子项目来实现。基本上在你的根

build.gradle
(将配置你的根项目的脚本)中你可以写:

subprojects {
  // configuration
}

您可能可以删除共享项目并将其放在根项目的

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
文件中。与最初的解决方案相比,优点是还能够应用插件、配置扩展,以及您通常可以执行的所有操作。

顺便说一句,您不需要在

jcenter()
块中同时使用
mavenCentral
repositories
-
jCenter
mavenCentral
的超集,并且是首选

© www.soinside.com 2019 - 2024. All rights reserved.