也许我错过了 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 个不同的子项目,它们都具有不同的性质,并应用不同的插件,那么父项目也必须始终将在某处使用的所有插件集合应用于自身?