簡體   English   中英

在子項目中繼承gradle插件

[英]Inheriting gradle plugin in subprojects

我想避免冗余,因此我得到一個包含以下內容的“共享”項目:

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

有什么辦法可以讓我的常規項目繼承插件塊或實際的插件嗎?

繼承本身。 在我看來,您可以通過從根項目配置子項目來實現您要做的事情。 基本上在您的根build.gradle (將配置您的根項目的腳本)中,您可以編寫:

subprojects {
  // configuration
}

你可以擺脫你的共享項目,並在root項目的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()mavenCentralrepositories塊- jCenter是的超集mavenCentral ,是最好的一個

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM