gpt4 book ai didi

java - 如何在构建时从.class文件中的gradle.properties获取值

转载 作者:行者123 更新时间:2023-12-02 10:08:50 27 4
gpt4 key购买 nike

我想从 Java 类中的 Gradle.properties 获取属性值。在 Java 中,该值应在构建时替换,并且该值将出现在 .jar(.class) 文件中,但不会出现在 .java 文件中。这样我们就可以直接在gradle.properties中更改值,而不需要更改代码。可以实现吗?

最佳答案

如果您说出您的具体用例,回答会更容易。它还有助于了解您的应用程序,例如它是 Spring(Boot)应用程序吗?在这种情况下,使用 Spring Profiles 可能更有意义。

无论如何,这是一个可能的解决方案:

  • 创建一个属性文件并将其放入资源文件夹中。定义一个占位符,gradle可以替换。例如文件“myapp.properties”

    greetingText=@greeting@
  • 将标记(“@”之间的文本)添加到您的 gradle.properties:

    greeting=Hello world!
  • 通过配置 processResources 任务,让 build.gradle 将 token 替换为 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");
    }
    }

关于java - 如何在构建时从.class文件中的gradle.properties获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55145133/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com