2017-12-13 22 views
1

私は、compileまたはcompile project経由で依存関係を含めるかどうかを知るロジックを持つメソッドを持っています。私は2番目いずれかを実行する場合でも、それは言う:プロジェクトを取得し、メソッド内から "コンパイル"メソッドを呼び出すにはどうすればよいですか?

メソッドの引数のコンパイル()が見つかりませんでした[プロジェクトを「:私の-LIB」]プロジェクトで:タイプorg.gradle.apiの「親-LIB」 。プロジェクト

メソッドの中でプロジェクトをコンパイルするにはどうすればよいですか?

ext.includeSpecial = {moduleName -> 

    //...elided... 

    compile project(":${moduleName}") 
} 

dependencies { 

    //This works 
    //compile project(':my-lib') 

    //But this does not 
    includeSpecial("my-lib") 
} 

答えて

1

compileメソッドを呼び出すようにしようとしないでください、それはむしろdependencies閉鎖内部/ をコンパイルする引数を返すメソッドを定義し、唯一のいくつかの隠された依存関係Handlerクラスに定義されている、あなたは、グルーヴィーなコードを書くことができますし、以下のような呼び出し方法:

def specialDependency() { 
    // if/else 
} 


dependencies { 
    compile specialDependency() 
} 

あなたは、「プログラムからのGradleで依存関係を追加」を検索することで、このような本https://discuss.gradle.org/t/programmatically-adding-dependencies/7575/12 としてより多くの結果を得ることができます。

いくつかのより詳細な説明は、Gradleのは実際には宣言型ではないので、依存関係が

dependencies { 
    compile "foo" 
} 

が実際にこれと同じ閉鎖、あるブロック:

project.dependencies({DependencyHandler handler -> 
    handler.compile("foo"); 
}) 
関連する問題