maven属性的Gradle等价



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

用例是这样的:我想要一个文件,声明回购依赖项的所有版本,以便它们在多模块项目的一个地方统一

compile group: 'javax.servlet.jsp.jstl', name: 'jstl', version: '1.2'

在Maven中,您可以拥有如下属性:

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

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

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

ext.commonsLangVersion = "2.4"

然后你可以在子项目的dependencies {}块中使用它,比如:

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还允许您通过依赖关系约束来控制可传递依赖关系的版本。如果您使用Gradle 4.6或更新版本,也可以导入Maven BOM。

发现这是一个可能的解决方案,尽管我真的不喜欢使用属性文件的相对路径。

第7点:https://proandroiddev.com/make-your-build-gradle-great-again-c84cc172a654#8029

最新更新