Java 如何将Maven项目属性作为服务提供?
上下文 我有一个Maven模块(我们称之为服务)。 它使用Spring Boot(非web环境)Java 如何将Maven项目属性作为服务提供?,java,spring,maven,pom.xml,properties-file,Java,Spring,Maven,Pom.xml,Properties File,上下文 我有一个Maven模块(我们称之为服务)。 它使用Spring Boot(非web环境)@ConfigurationProperties从一个或多个.properties文件加载配置。在运行时,配置存储在一个单例类MyConfiguration.java中,包含所有已知属性的getter 目标是让其他模块/项目(我们称之为应用程序)具有各自的属性文件,并使用服务自动填充配置。此外,服务通过src/main/resourcesaroot settings.properties导出,其中包含
@ConfigurationProperties
从一个或多个.properties
文件加载配置。在运行时,配置存储在一个单例类MyConfiguration.java
中,包含所有已知属性的getter
目标是让其他模块/项目(我们称之为应用程序)具有各自的属性
文件,并使用服务自动填充配置。此外,服务通过src/main/resources
aroot settings.properties
导出,其中包含所有应用程序所需的项目属性占位符希望通过基于
pom.xml
其中一个属性是版本。在服务中测试验证它是否由具有以下设置的Maven替换:
根设置。属性
applicationVersion=${project.version}
pom.xml
<build>
<testResources>
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>
</build>
src/测试/资源
真的
问题
如何配置或重新设计服务,以便来自应用程序的单个依赖项和对MyConfiguration.getInstance().getApplicationVersion()
的调用提供应用程序的版本
目前,当应用程序依赖于服务时,根设置。如上所示的属性
出现在其类路径中。然而,仍然存在两个问题:
在资源筛选期间不会被替换,因为${project.version}
位于外部.jar中。我需要配置另一个目标来解包.jar,并希望随后应用资源筛选根设置.properties
- 每个应用程序都需要将资源筛选添加到其配置中,从而降低使用服务的便利性。我正在寻找一种解决方案,在最好的情况下,它不需要对应用程序进行任何修改
pom.xml
按照相关性的顺序,这两个主题可能略有关联:
-
-您应该使用
Spring Cloud Config
我建议最好使用,它可以从包含此类信息的模板创建类…(示例:)。。