[英]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 的配置范圍(如 implementation、api 和 compileOnly)作為 Java 插件 init 階段的一部分進行初始化。
因此,根據您的子項目的結構,您可能有一個或多個不使用無法識別范圍的 Java 插件的子項目。 我不太確定子項目之間的執行順序,這可能也起作用。
一個簡單的解決方案是將插件也應用到 allprojects 閉包中,例如
allprojects {
apply plugin: 'java'
dependencies {
implementation enforcedPlatform('group:bom-artifact:version')
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.