Java 如何将Maven项目属性作为服务提供?

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导出,其中包含

上下文

我有一个Maven模块(我们称之为服务)。 它使用Spring Boot(非web环境)
@ConfigurationProperties
从一个或多个
.properties
文件加载配置。在运行时,配置存储在一个单例类
MyConfiguration.java
中,包含所有已知属性的getter

目标是让其他模块/项目(我们称之为应用程序)具有各自的
属性
文件,并使用服务自动填充配置。此外,服务通过
src/main/resources
a
root 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}
    在资源筛选期间不会被替换,因为
    根设置.properties
    位于外部.jar中。我需要配置另一个目标来解包.jar,并希望随后应用资源筛选
  • 每个应用程序都需要将资源筛选添加到其配置中,从而降低使用服务的便利性。我正在寻找一种解决方案,在最好的情况下,它不需要对应用程序进行任何修改
    pom.xml
相关问题
按照相关性的顺序,这两个主题可能略有关联:
-

-

您应该使用
Spring Cloud Config
我建议最好使用,它可以从包含此类信息的模板创建类…(示例:)。。