Gradleは、Filetreeを使用して依存関係をサブプロジェクトに注入することに失敗します
-
11-10-2019 - |
質問
多分私はGradleの仕組みについて何かを逃しています。私がここに持っているのは、構成のみを含む親プロジェクトです。つまり、それを構築するときにアーティファクトが構築されることはありません。すべてのサブプロジェクトを管理および構築するだけです。
これで、サブプロジェクトは依存関係の構成を共有しているので、ルートプロジェクトのbuild.gradleで何をするかを考えました。
subprojects {
dependencies {
compile fileTree(dir: 'lib', includes: ['*.jar'])
}
}
しかし、それは機能しません、それはかなりあいまいなエラーメッセージで失敗します:
ルートプロジェクト「Qype-android」の評価の評価が発生しました。 internal.file.defaultconfigurablefiletree)値:[ファイルセット 'lib']可能なソリューション:モジュール(java.lang.object)
いくつかの試行錯誤の後、「Java」プラグインを親プロジェクトに適用することで、この問題を「修正」することができました。
どうして? Gradle Docsからどこにも見られません fileTree
依存関係には、Javaプラグインが必要です。それでも、構成されているプロジェクトではなく、構成を注入しているプロジェクトでそれを必要とするのはなぜですか(サブプロジェクトはすべてJavaプラグインを自分で適用することに注意してください)?
これは、すべての変化する性質であり、異なるプラグインを適用する異なるサブプロジェクトがある場合、親プロジェクトは常にのセットを適用する必要があることを意味します。 すべて プラグインの存在はどこかでそれ自体に使用されていますか?
解決
そうではありません fileTree
「Java」プラグインが必要です。
エラーメッセージは未定義について不平を言っています compile
依存関係の構成。 Javaプラグインは、この構成を定義しているため、依存関係(Filetreeを含む)を追加できます。