Gradle 父模块中的依赖平台
Gradle dependency platform in parent module
我有一个包含很多子项目的 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 的配置范围如实现、api 和 compileOnly 被初始化为 Java 插件初始化阶段的一部分。
因此,根据您的子项目的结构,您可能有一个或多个子项目不使用不识别范围的 Java 插件。我不太确定子项目之间的执行顺序,这可能也有影响。
一个简单的解决方案是将插件也应用到 allprojects 闭包中,例如
allprojects {
apply plugin: 'java'
dependencies {
implementation enforcedPlatform('group:bom-artifact:version')
}
}
我有一个包含很多子项目的 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 的配置范围如实现、api 和 compileOnly 被初始化为 Java 插件初始化阶段的一部分。
因此,根据您的子项目的结构,您可能有一个或多个子项目不使用不识别范围的 Java 插件。我不太确定子项目之间的执行顺序,这可能也有影响。
一个简单的解决方案是将插件也应用到 allprojects 闭包中,例如
allprojects {
apply plugin: 'java'
dependencies {
implementation enforcedPlatform('group:bom-artifact:version')
}
}