2017-05-05 60 views
0

我想避免冗餘,因此我得到了一個包含這樣看起來一個「共享」項目:繼承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") 
} 

有沒有什麼辦法可以讓我的常規項目繼承的插件模塊或實際的插件呢?

回答

1

不是繼承等等。在我看來,你想要做的事可以通過從根項目配置子項目來實現。基本上,在你的根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()mavenCentralrepositories塊 - jCentermavenCentral超集,是首選的一個

+0

試過了,但我發現: '錯誤:(57,0)無法找到類型爲org.gradle.api.Project的項目'core'的參數[build_44j4lgef9ftzfeyhh4janhtfy $ _run_closure3 $ _closure14 @ 65b80565]的方法插件()。「 因此顯然不能使用插件語句裏面的子項目... – CryNickSystems

+0

你是對的,我已經解決了解決'plugins'目前限制的問題 – wasyl