我想从Java类的Gradle.properties获取属性值。 在Java中,应在构建时替换该值,并且在.jar(.class)文件中将出现该值,但不在.java文件中。这样我们就可以直接在gradle.properties中更改值,而无需更改代码。 有可能实现吗?
答案 0 :(得分:0)
如果您告诉了您特定的用例,回答起来会更容易。 知道您的应用程序也会有所帮助,例如,它是Spring(引导)应用程序吗?在这种情况下,使用Spring Profiles可能更有意义。
无论如何,这是一个可能的解决方案:
创建一个属性文件,并将其放在资源文件夹中。定义一个占位符可以替换的占位符。例如文件“ myapp.properties”
greetingText=@greeting@
将令牌(“ @”之间的文本)添加到gradle.properties:
greeting=Hello world!
通过配置processResources任务,使build.gradle用gradle.properties中的值替换令牌:
processResources {
inputs.file file('gradle.properties')
filter(
ReplaceTokens,
tokens: [
greeting: project.ext.greeting
]
)
}
在运行时从属性文件中加载值:
public String getGreeting() throws IOException {
try (
InputStream inputStream = Thread.currentThread().getContextClassLoader().getResource("myapp.properties").openStream();
) {
Properties appProps = new Properties();
appProps.load(inputStream);
return appProps.getProperty("greetingText");
}
}