2017-08-29 5 views
0

私はかなり単純なグラデルの問題で戦っているが、検索しても解決策を見つけることはできない。 非常に単純ですが、マルチプロジェクトビルドでは、ロードするプラグインに基づいていくつかのサブプロジェクトを構成する必要があります。サブプロジェクトは、プラグイン「戦争」や「耳」を持っているので、もし は、私は成功せず、以下を試してみました。この.. ん:Gradle - プラグインの存在に基づいてサブプロジェクトを構成する

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

上記はプラグインを適用することはありません。「私のスーパーの特別なプラグイン」を

なにか提案を? ありがとう

答えて

1

Gradleはサブプロジェクトからbuild.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ウィッヒを共用することです。この共有グラデルファイルは、apply from: '../common.gradle'を適切な場所に使用してsubproject/build.gradleに含めることができます。

関連する問題