gpt4 book ai didi

gradle - 将平台约束应用于所有配置

转载 作者:行者123 更新时间:2023-12-05 03:45:25 24 4
gpt4 key购买 nike

如何以符合人体工程学的方式从 BOM 继承所有配置的约束?以下是我目前的做法。我在 Gradle 6.6.1 上。

dependencies {
compileOnly(platform('x:y:z'))
implementation(platform('x:y:z'))
annotationProcessor(platform('x:y:z'))
testAnnotationProcessor(platform('x:y:z'))
testImplementation(platform('x:y:z'))
testCompileOnly(platform('x:y:z'))
}

最佳答案

好吧,您可以通过像这样滥用 configurations.all 方法来做到这一点:

// Groovy DSL
configurations.all { config ->
project.dependencies.add(config.name, project.dependencies.platform('x:y:z'))
}

但是您不需要首先将平台添加到所有这些配置中。因为它们中的大多数都是可解析的并且扩展了 apiimplementation,所以您通常只需要将它添加到其中之一。唯一的异常(exception)是 annotationProcessor,它是独立的(但由 testAnnotationProcessor 扩展)。所以你仍然可以将它减少到:

// Groovy DSL
dependencies {
implementation platform('x:y:z') // or api
annotationProcessor platform('x:y:z')
}

我认为这更具可读性和准确性。

一个常见的用例是 Spring Boot。它可能看起来像这样:

// Groovy DSL
import org.springframework.boot.gradle.plugin.SpringBootPlugin

plugins {
id 'java'
id 'org.springframework.boot' version '2.4.2'
}

dependencies {
// BOMS (Note that using the "BOM_COORDINATES" variable makes it match the version of the plugin)
implementation platform(SpringBootPlugin.BOM_COORDINATES)
annotationProcessor platform(SpringBootPlugin.BOM_COORDINATES)

// Actual dependencies
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
}

有趣的是,有一个Gradle issue在这个确切的用例上。他们在这里解释说,通常您不需要此功能,并且在您需要的地方最好明确说明它,而不是仅仅将一组依赖版本“锤击”到所有内容上。

关于gradle - 将平台约束应用于所有配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65842725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com