maven性质的Gradle等价

maven性质的Gradle等价,maven,gradle,Maven,Gradle,如何在Gradle中添加类似于Maven属性的属性 用例是这样的:我希望有一个文件声明repo依赖项的所有版本,以便将它们统一到多模块项目的单个位置 编译组:'javax.servlet.jsp.jstl',名称:'jstl',版本:'1.2' 在Maven中,您可以具有如下属性: <properties> <jstlVersion>1.2</jstlVersion> </properties> 1.2 使用Gradle的外部属性可以

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

用例是这样的:我希望有一个文件声明repo依赖项的所有版本,以便将它们统一到多模块项目的单个位置

编译组:'javax.servlet.jsp.jstl',名称:'jstl',版本:'1.2'

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

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

1.2

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

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

第7点:
根生成文件中定义的项目属性可用于子项目。因此,如果您的root build.gradle文件中有以下内容:

然后您可以在子项目的
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或更高版本,也可以

allprojects {
    apply from: "dependencies.gradle"
}