父模块中的渐变依赖性平台



我有一个有很多子项目的渐变项目,我想要一个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的配置作用域,如implementation、api和compileOnly,作为Java插件初始化阶段的一部分进行初始化。

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

一个简单的解决方案是将插件也应用到所有项目的闭包中,比如

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

最新更新