2017-08-29 70 views
0

我正在打一個相當簡單的gradle問題,但儘管搜索我找不到解決方案。 非常簡單,在多項目構建中,我需要根據它們加載的插件配置一些子項目。所以 如果子項目有插件「戰爭」或「耳朵」做.. 我曾嘗試沒有成功如下:Gradle - 基於插件存在配置子項目

subprojects { 
    if (it.plugins.hasPlugin('war') || (it.plugins.hasPlugin('ear') { 
     apply plugin: 'my super special plugin' 
     .... 
     .... 
    } 
} 

以上從來沒有適用的插件:「我的超級特殊插件」

任何建議? 謝謝

回答

1

在評估來自子項目的build.gradle之前,Gradle執行subprojects閉包。因此,目前沒有關於build.gadle插件的信息。 要在對subproject/build.gradle進行評估之後執行一些代碼,您應該使用ProjectEvaluationListener。 例如:

subprojects { 
    afterEvaluate { 
     if (it.plugins.hasPlugin('war') || (it.plugins.hasPlugin('ear') { 
      it.plugins.apply 'my super special plugin' 
      .... 
      .... 
     } 
    } 
} 

還要注意有關it.plugins.apply 'my super special plugin'而不是apply plugin: 'my super special plugin'

另一種選擇是使用共享common.gradle至極將配置子項目。這個共享的gradle文件可能包含在subproject/build.gradle中,在適當的位置使用apply from: '../common.gradle'

相關問題