たぶん、Gradleの動作について何かが足りないのかもしれません。ここにあるのは親プロジェクトです。これには構成のみが含まれます。つまり、ビルド時にアーティファクトはビルドされず、すべてのサブプロジェクトを管理およびビルドするだけです。
これで、サブプロジェクトはいくつかの依存関係の構成を共有するので、ルートプロジェクトのbuild.gradleで何をするかを考えました。
subprojects {
dependencies {
compile fileTree(dir: 'lib', includes: ['*.jar'])
}
}
ただし、これは機能せず、かなりあいまいなエラーメッセージで失敗します。
ルートプロジェクト'qype-android'の評価で問題が発生しました原因:メソッドの署名がありません:org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.compile()が引数タイプに適用可能です:(org.gradle.api。 internal.file.DefaultConfigurableFileTree)値:[ファイルセット'lib']可能な解決策:module(java.lang.Object)
試行錯誤の末、親プロジェクトに「java」プラグインを適用することで、この問題を「修正」することができました。
どうして?fileTree
Gradleのドキュメントから、依存関係にJavaプラグインが必要であることがわかりません。それでも、構成されているプロジェクトではなく、構成を注入しているプロジェクトで必要になるのはなぜですか(サブプロジェクトはすべてJavaプラグイン自体を適用することに注意してください)。
これは、すべて異なる性質のN個の異なるサブプロジェクトがあり、異なるプラグインを適用する場合、親プロジェクトは常に、どこかで使用されているすべてのプラグインのセットをそれ自体にも適用する必要があることを意味しますか?