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) 值:[file set 'lib'] 可能的解决方案:module(java.lang.Object)

经过反复试验,我可以通过将“java”插件应用于父项目来“解决”这个问题。

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

这是否意味着如果我有 N 个不同的子项目,它们都具有不同的性质,并应用不同的插件,那么父项目也必须始终将在某处使用的所有插件集合应用于自身?

4

1 回答 1

2

它不是fileTree需要'java'插件的。

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

于 2011-01-14T12:56:34.137 回答