我有一个有很多子项目的渐变项目,我想要一个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')
}
}