Maven $project.version 不工作

Posted

技术标签:

【中文标题】Maven $project.version 不工作【英文标题】:Maven $project.version not workingMaven $project.version 不工作 【发布时间】:2017-08-06 06:04:12 【问题描述】:

我想在我的 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

但是这里的区别是我使用的是弹簧靴。当我运行应用程序时,输出是“$project.version”,在 target/application.properties 文件中,我可以看到该属性没有更新为版本号。

有什么想法吗?

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

application.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

【问题讨论】:

在 application.properties 文件中尝试不带“”的属性。例如。 mvn.version=$project.version @Edwin - 遗憾的是它没有用。我将发布我拥有的所有文件和代码 【参考方案1】:

来自spring boot documentation

因为默认配置文件接受 Spring 风格的占位符 ($...​) Maven 过滤更改为使用@..@ 占位符(您 可以使用 Maven 属性 resource.delimiter 覆盖它)。

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

application.version=@project.version@

或使用 ryanp 的 answer 中提到的属性 $resource.delimiter 恢复资源过滤器分隔符。

【讨论】:

【参考方案2】:

spring-boot-starter-parent 将资源插件分隔符设置为 @ 而不是默认的 $* - 您可以使用 $resource.delimiter 属性覆盖它。

【讨论】:

你的意思是这样的:我的 application.properties 文件中的 application.version=$resource.delimiter?

以上是关于Maven $project.version 不工作的主要内容,如果未能解决你的问题,请参考以下文章

在 Maven 版本中忽略 $project.version:prepare

maven项目创建——异常:Cannot detect Web Project version

解决maven web项目Cannot detect Web Project version. Please specify version of Web Project through...的错误

Maven自定义打包的包名

行家 $project.version.prefix

Maven内置属性