java - Maven ${project.version} 不工作

标签 java maven spring-boot environment-variables

我想从我的 Java 应用程序中的 Maven 中提取版本代码。我创建了一个 application.properties 文件,其中包含一个调用 ${project.version} 的属性,并将以下内容添加到 pom 文件中

<resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
</resource>

,与这个问题非常相似 - Maven ${project.version} doesn't show up in java

但是这里的不同之处在于我使用的是 spring boot。当我运行该应用程序时,输出为“${project.version}”并且在 target/application.properties 文件中,我可以看到该属性尚未使用版本号进行更新。

有什么想法吗?

更新 - 我正在使用的文件和代码

应用程序.properties 文件

application.version=${project.version}

获取属性

public String getVersionTest() {
        String resourceName = "application.properties"; // could also be a constant
        ClassLoader loader = Thread.currentThread().getContextClassLoader();
        Properties props = new Properties();
        try(InputStream resourceStream = loader.getResourceAsStream(resourceName)) {
            props.load(resourceStream);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return props.getProperty("application.version");
    }


System.out.println("version number = " + kiosk.getVersionTest());
output = ${project.version}

最佳答案

来自 spring boot documentation

since the default config files accept Spring style placeholders (${…​}) the Maven filtering is changed to use @..@ placeholders (you can override that with a Maven property resource.delimiter).

您有两种选择来实现所需的行为: 要么使用 @..@ 语法来指定占位符。例如。

application.version=@project.version@

或使用属性 ${resource.delimiter} 还原资源过滤器定界符,如 ryanp 的 answer 中所述.

关于java - Maven ${project.version} 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42810793/

相关文章:

java - 以UTF-8文件形式打开SpringBoot资源

java - 如何通过索引获取该数组中的元素?

java - getResourceAsStream 在一种情况下返回 null,但在另一种情况下不返回 null,具有相同的类路径

android - 找不到io.fabric.tools.gradle:1. +

netbeans - 如何让 Maven 构建我的项目,并将所有依赖项放在一个单独的文件夹中,准备好打包?

java - JPA查询以检查特定年月是否存在记录?

azure - 在 Spring Boot 应用程序中使用 applicationinsights 进行日志记录

java - Spring/Hibernate 添加一个在关闭 EntityManagerFactory 之前运行的关闭钩子(Hook)

java - 对话框关闭在适配器内部不起作用

java - 音频时间尺度音调修改 - 开源示例?