作者:乌龟考拉互受 | 来源:互联网 | 2023-02-08 20:14
我想从我的Java应用程序中的Maven中提取版本代码。我创建了一个具有$$ project.version}属性的application.properties文件,并将以下内容添加到pom文件中
src/main/resources
true
,与这个问题非常相似-Maven $ {project.version}未显示在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}
skadya..
6
从Spring Boot文档
由于默认配置文件接受Spring样式占位符($ {…?}),因此Maven过滤已更改为使用@ .. @占位符(您可以使用Maven属性resource.delimiter覆盖它)。
您可以通过两种方法来实现所需的行为:使用@ .. @语法指定占位符。例如
application.version=@project.version@
或使用${resource.delimiter}
ryanp的answer中提到的property还原资源过滤器分隔符。
1> skadya..:
从Spring Boot文档
由于默认配置文件接受Spring样式占位符($ {…?}),因此Maven过滤已更改为使用@ .. @占位符(您可以使用Maven属性resource.delimiter覆盖它)。
您可以通过两种方法来实现所需的行为:使用@ .. @语法指定占位符。例如
application.version=@project.version@
或使用${resource.delimiter}
ryanp的answer中提到的property还原资源过滤器分隔符。