Java 读取外部应用程序属性中的POM值
我在pom文件中有以下属性Java 读取外部应用程序属性中的POM值,java,spring,maven,Java,Spring,Maven,我在pom文件中有以下属性 演示应用程序 演示spring项目 1.0.0-SNAPSHOT 我有一个类从application.yml 但是我没有使用src/main/resources下的application.yml,而是通过一个外部文件指定属性,如下所示 java-jar-DemoApplication-1.0.0-SNAPSHOT.jar--spring.config.location=application.yml 在这个外部应用程序属性中,我有以下属性 swagger: api
演示应用程序
演示spring项目
1.0.0-SNAPSHOT
我有一个类从application.yml
但是我没有使用src/main/resources
下的application.yml
,而是通过一个外部文件指定属性,如下所示
java-jar-DemoApplication-1.0.0-SNAPSHOT.jar--spring.config.location=application.yml
在这个外部应用程序属性中,我有以下属性
swagger:
apittitle:“@project.name@”
apiDescription:“@project.description@”
apiVersion:“@project.version@”
问题是,@project.name@
和其他属性没有按预期被替换,而是按原样读取
应如何处理该问题?根据,您可以使用以下配置:
<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>
org.apache.maven.plugins
maven资源插件
2.7
@
假的
使用usefaultdelimiters
设置为false
或true
,具体取决于您的配置
该官方文档的其他部分将有助于您的用例,特别是其中的一部分:“77.5将YAML用于外部属性”
如果没有工作,为什么不加载自定义属性文件?它可以加载,因为你需要没有任何问题。只要在启动程序时用正确的路径引用它,然后在程序内部测试您的文件config.properties
是否可用并包含您需要使用的内容
当然,加载资源文件的Maven方式是最简单的方式,它也应该是一个简单的属性文件。在我发布的管理配置的软件中,我就是这样做的:
app.properties
<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>
org.apache.maven.plugins
maven资源插件
2.7
@
假的
使用usefaultdelimiters
设置为false
或true
,具体取决于您的配置
该官方文档的其他部分将有助于您的用例,特别是其中的一部分:“77.5将YAML用于外部属性”
如果没有工作,为什么不加载自定义属性文件?它可以加载,因为你需要没有任何问题。只要在启动程序时用正确的路径引用它,然后在程序内部测试您的文件config.properties
是否可用并包含您需要使用的内容
当然,加载资源文件的Maven方式是最简单的方式,它也应该是一个简单的属性文件。在我发布的管理配置的软件中,我就是这样做的:
app.properties
也许您可以尝试在Maven目标内编写属性文件。您是如何读取属性的?使用
@Value()
发布代码。它在使用src/main/resources下的文件时工作,但在属性位于外部文件时不工作据我所知,尝试使用@PropertySources,甚至在构建阶段将属性文件捆绑起来。我的目标是执行阶段。您如何阅读属性?使用@Value()
发布代码。它在使用src/main/resources下的文件时工作,但在属性位于外部文件时不工作据我所知,尝试使用@PropertySources,甚至在构建阶段将属性文件捆绑起来。我的目标是执行阶段。