gradle - 包括具有相同插件依赖项的第 3 方子项目

标签 gradle git-submodules

我正在尝试将 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/

相关文章:

android - 程序类型已经存在 : com. paytm.pg.AppTest

git - 使用 Git 复制子模块

git - 如何将 core.sshCommand 选项传播到子模块更新?

Git:克隆项目时未 pull 子模块

git - 如何在 Git 中跟踪子模块的配置文件?

git - 使用本地更改更新 Git 子模块

osgi - 使 Sonar Runner Gradle 任务依赖于我的一项任务

java - 带有 TestNG 和 Gradle 的 Selenium : Setting browser crash tests as SKIPPED instead of FAILED

java - 如何避免使用 gradle 在 IntelliJ IDEA 中镜像库?

unit-testing - 在 gradle 中使用 jacoco 显示测试覆盖率