我想从 Java 类中的 Gradle.properties 获取属性值。在 Java 中,应该在构建时替换该值,并且在 .jar(.class) 文件中会出现该值,但不会出现在 .java 文件中。这样我们就可以直接在 gradle.properties 中更改值,而无需更改代码。有没有可能实现?
问问题
3037 次
1 回答
1
如果您告诉您的具体用例,会更容易回答。了解您的应用程序也会有所帮助,例如它是 Spring(Boot)应用程序吗?在这种情况下,使用 Spring Profiles 可能更有意义。
无论如何,这是一个可能的解决方案:
创建一个属性文件并将其放在您的资源文件夹中。定义一个占位符,该 gradle 可以替换。例如文件“myapp.properties”
greetingText=@greeting@
将令牌('@'s 之间的文本)添加到您的 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"); } }
于 2019-03-14T10:00:54.503 回答