如何使用命令行输入来选择要在 gradle 构建中使用的属性文件?

Mar*_*ple 4 java gradle properties-file

我有一个 java 项目,可以根据我将为其构建的环境使用几个不同的属性文件之一(例如,development.properties 将为我提供适合开发环境的属性),并且我希望能够通过在命令行中选择它来控制构建中包含哪个 gradle。我知道您可以通过在 build.gradle 文件中添加类似的内容来选择要包含在构建中的属性文件:

Properties props = new Properties()
props.load(new FileInputStream("/path/file.properties"))
Run Code Online (Sandbox Code Playgroud)

但我希望能够在构建项目时即时选择要使用的属性文件。

mca*_*lin 5

您可以通过多种方式将此信息传递到 gradle 构建中,命令行属性就是其中之一。

如果您查看https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_properties_and_system_properties

您会看到有一种方法可以传递命令行参数,您可以在 gradle 脚本中访问这些参数。

例如:

./gradlew -PenvFile="/path/file.properties" clean jar
Run Code Online (Sandbox Code Playgroud)

您稍后可以通过您选择的键引用它来从 gradle 访问它,例如

task printProps << {
println envFile
}
Run Code Online (Sandbox Code Playgroud)

哪个输出

./gradlew -PenvFile="/path/test.properties" printProps
:printProps
/path/test.properties

BUILD SUCCESSFUL

Total time: 0.747 secs
Run Code Online (Sandbox Code Playgroud)