gpt4 book ai didi

maven - Maven 属性的 Gradle 等效项

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

如何在 Gradle 中添加类似于 Maven 属性的属性?

用例是这样的:我想要一个文件来声明 repo 依赖项的所有版本,以便将它们统一在一个位置以用于多模块项目
compile group: 'javax.servlet.jsp.jstl', name: 'jstl', version: '1.2'
在 Maven 中,您可以拥有如下属性:

<properties>
<jstlVersion>1.2</jstlVersion>
</properties>

使用 Gradle 的外部属性可以吗?或者只是将它们添加到 gradle.properties 文件中?

最佳答案

根构建文件中定义的项目属性可用于子项目。因此,如果您的根 build.gradle 文件中有此内容:

ext.commonsLangVersion = "2.4"

那么你可以在 dependencies {} 中使用它像这样的子项目 block :
dependencies {
implementation "commons-lang:commons-lang:${commonsLangVersion}"
}

您还可以在根 gradle.properties 文件而不是根构建文件中定义此类属性。你以同样的方式使用它们。

如果您真的觉得需要将版本放在单独的文件中,您可以这样做。只需将以下行添加到根构建文件中:
apply from: "dependencies.gradle"

在 dependencies.gradle 文件中,您可以定义额外的项目属性,就好像它们直接在根构建文件中一样:
ext.commonsLangVersion = "2.4"

备注 通常,构建脚本中设置的值优先于 gradle.properties 中的值。但是如果你在根构建脚本中设置了一个值,那么 gradle.properties 中的任何匹配值都会在子项目中覆盖它。

这种行为有点令人困惑和独特。对于与 Gradle 单项目构建一致的行为,您需要在根构建脚本中使用以下内容:
allprojects {
apply from: "dependencies.gradle"
}

作为一般经验法则,任何给定的属性都应该在构建脚本或 gradle.properties 中声明/定义。如果用户想要覆盖特定的属性值,他们可以在 $USER_HOME/.gradle/gradle.properties 中进行。

[ 编辑 我已更新上述说明以澄清实际行为]

最后一件事:Gradle 还允许您通过 dependency constraints 控制传递依赖的版本。 .您也可以 import Maven BOMs如果您使用的是 Gradle 4.6 或更高版本。

关于maven - Maven 属性的 Gradle 等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51541905/

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