Gradle无法使用fileTree将依赖项注入子项目

时间:2011-01-14 12:48:47

标签: dependency-injection gradle subproject

也许我错过了Gradle的工作方式。我这里有一个父项目,它只包含配置,即在构建它时不会构建任何工件,它只管理和构建其所有子项目。

现在子项目共享一些依赖配置,所以我想我将在root项目的build.gradle中做什么:

subprojects {
  dependencies {
    compile fileTree(dir: 'lib', includes: ['*.jar'])
  }    
}
然而,如果它不起作用,它会失败并显示一个相当模糊的错误消息:

  

评估root时出现问题   项目'qype-android'原因:没有   签名方法:   org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.compile()   适用于参数类型:   (org.gradle.api.internal.file.DefaultConfigurableFileTree)   值:[文件集'lib']可能   solutions:module(java.lang.Object)

经过一些试验和错误后,我可以通过将'java'插件应用于父项目来“解决”这个问题。

为什么?我从Gradle文档中看不到fileTree依赖项需要Java插件。即便如此,为什么我会在注入配置的项目上需要它,而不是在正在配置的项目上(注意子项目都自己应用Java插件)?

这是否意味着如果我有N个不同的子项目,这些子项目都具有不同的性质,并且应用不同的插件,那么父项目必须始终应用所有插件在他们自己的某个地方使用的集合,太?

1 个答案:

答案 0 :(得分:2)

不是fileTree需要'java'插件。

错误消息抱怨未定义的compile依赖项配置。 Java插件为您定义此配置,以便您可以向其添加依赖项(包括您的fileTree)。