0

たぶん、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」プラグインを適用することで、この問題を「修正」することができました。

どうして?fileTreeGradleのドキュメントから、依存関係にJavaプラグインが必要であることがわかりません。それでも、構成されているプロジェクトではなく、構成を注入しているプロジェクトで必要になるのはなぜですか(サブプロジェクトはすべてJavaプラグイン自体を適用することに注意してください)。

これは、すべて異なる性質のN個の異なるサブプロジェクトがあり、異なるプラグインを適用する場合、親プロジェクトは常に、どこかで使用されているすべてのプラグインのセットをそれ自体にも適用する必要があることを意味しますか?

4

1 に答える 1

2

fileTree'java'プラグインが必要なのはそれではありません。

compileエラーメッセージは、未定義の依存関係の構成について不平を言っています。Javaプラグインはこの構成を定義するので、依存関係(fileTreeを含む)をプラグインに追加できます。

于 2011-01-14T12:56:34.137 に答える