[英]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()
和mavenCentral
在repositories
塊- jCenter
是的超集mavenCentral
,是最好的一個
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.