【问题标题】:Gradle dependency platform in parent module父模块中的 Gradle 依赖平台
【发布时间】:2020-10-14 11:13:35
【问题描述】:

我有一个包含很多子项目的 gradle 项目,我希望将 BOM 文件应用于所有子项目。 我试图把它放在一些子项目中,它工作正常:

dependencies{
  implementation enforcedPlatform('group:bom-artifact:version')
}

但是当我把它作为父 gradle.build 时,或者像这样包装它:

allprojects {
    dependencies {
        implementation enforcedPlatform('group:bom-artifact:version')
    }
}

以错误结束:

> Could not find method implementation() for arguments [DefaultExternalModuleDependency{group='group', name='bom-artifact', version='version', configuration='default'}] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

不知道出了什么问题。如何解决这个问题?或者有没有更好的方法将一个 BOM 应用到所有子项目并从一个地方进行管理?

【问题讨论】:

    标签: java gradle platform


    【解决方案1】:

    我认为问题不在于平台本身

    如果您尚未(尚未)应用 Java 插件,您收到的消息通常会出现。

    Gradle 的配置范围(如 implementation、api 和 compileOnly)在 Java 插件的 init 阶段初始化。

    因此,根据您的子项目的结构,您可能有一个或多个不使用无法重新识别范围的 Java 插件的子项目。我不太确定子项目之间的执行顺序,这可能也起作用。

    一个简单的解决方案是将插件也应用到 allprojects 闭包中,例如

    allprojects {
        apply plugin: 'java'
        dependencies {
            implementation enforcedPlatform('group:bom-artifact:version')
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-12-27
      • 2019-02-11
      • 2013-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多