簡體   English   中英

父模塊中的 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 的配置范圍(如 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM