我正在尝试将 Git 子模块作为子项目包含到我的主要 Gradle 项目中,但 Gradle 拒绝验证构建脚本,理由是我的项目和子项目都需要相同的插件 ("Plugin request for plugin already on the classpath must not include a version"
)。
从主项目中删除插件不是一种选择,因为插件定义的任务将不再可用于主构建脚本。也不会从主构建脚本中省略插件版本,因为这是 Gradle 看到的插件声明的第一个实例(而在子项目的声明中抛出错误)。
通常我会让我的项目修补这样的不兼容性,但由于构建脚本没有验证,这显然不是一个选项。鉴于我实际上无法控制子项目的构建脚本,可以做些什么来解决冲突?
最佳答案
我有一个类似的问题,我想包含一个也应该能够自行构建的模块。更准确地说,我想要包含的模块也声明了 com.github.johnrengelman.shadow
用于生成可运行的 JAR。这导致了两个 build.gradle 使用版本号声明此插件的文件。
解决方案是使用 Composite Build .这导致模块的构建完全独立,能够声明任何版本的插件。
您所要做的就是添加includeBuild "<pathToSubmodule>"
在你的根目录 settings.gradle :
includeBuild "../submodule"
然后,您可以在顶层 中将子模块定义为普通依赖项。 build.gradle :
dependencies {
implementation 'com.mycompany:submodule:1.0-SNAPSHOT'
}
关于gradle - 包括具有相同插件依赖项的第 3 方子项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57815595/