如何解决在外部应用程序属性中读取POM值
我在pom文件中具有以下属性
<name>DemoApplication</name>
<description>Demo spring project</description>
<version>1.0.0-SNAPSHOT</version>
我有一个类可以从application.yml
中读取属性
但是,我不是通过application.yml
下的src/main/resources
而是通过外部文件指定属性,如下所示:
java -jar DemoApplication-1.0.0-SNAPSHOT.jar --spring.config.location=application.yml
在此外部应用程序属性中,我具有以下属性
swagger:
apiTitle: '@project.name@'
apiDescription: '@project.description@'
apiVersion: '@project.version@'
问题在于@project.name@
和其他属性并未按预期替换,而是按原样读取。
该如何解决该问题?
解决方法
根据that section of the official documentation of Spring Boot v2,您可以使用以下命令进行配置:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
<delimiters>
<delimiter>@</delimiter>
</delimiters>
<useDefaultDelimiters>false</useDefaultDelimiters>
</configuration>
</plugin>
根据您的配置将useDefaultDelimiters
设置为false
或true
。
该官方文档的其他部分将对您的用例有所帮助,尤其是以下这些部分:“ 77.5将YAML用于外部属性”。
如果没有任何效果,为什么不加载自定义属性文件?可以根据需要加载,没有任何问题。在启动程序时,只需使用正确的路径引用它,然后在程序内部,测试文件config.properties
是否可用并且包含您需要使用的文件。
当然,Maven加载资源文件的方法是最好的简便方法,它也应该是一个简单的Properties文件。我已经在发布用于管理配置的软件中完全按照这种方式进行操作:
- 写一个
app.properties
- 使用资源配置在运行时使用Maven加载该文件
- 使用经典语法$ {my.prop}扩展属性
- 使用Maven任务运行程序。
当然,当您以jar形式分发应用程序时,情况有所不同。 也许您可以尝试在Maven目标内编写属性文件。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。