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

时间:2017-04-14 14:37:18

标签: java spring maven pom.xml properties-file

上下文

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

目标是让其他模块/项目(让我们称之为应用)拥有各自的.properties文件并使用服务来自动填充配置。此外,服务通过src/main/resources root-settings.properties导出,其中包含所有应用所需的项目属性的占位符。
希望通过基于pom.xml

的项目属性派生的Maven过滤机制填充这些内容

一个这样的属性是版本。在服务中,测试通过以下设置验证是否由Maven替换:

root-settings.properties

applicationVersion=${project.version}

pom.xml

<build>
  <testResources>
    <testResource>
      <directory>src/test/resources</directory>
      <filtering>true</filtering>
    </testResource>
  </testResources>
</build>

问题

如何配置或重新设计服务,以便来自应用的单一依赖关系和对MyConfiguration.getInstance().getApplicationVersion()的调用提供应用<的< /强>

目前的情况是,当应用依赖于服务时,如上所示的root-settings.properties会出现在其类路径中。但是仍有两个问题:

    资源过滤期间未替换
  • ${project.version},因为root-settings.properties位于外部.jar中。我需要配置另一个目标来解压缩.jar并希望之后应用资源过滤。
  • 每个应用都需要在其配置中添加资源过滤功能,因此服务的使用不太方便。我正在寻找一种解决方案,在最好的情况下不需要修改应用 pom.xml

相关问题
为了相关性,这两个主题可能略有关联:
  - Maven filtering on resources stored in dependencies
  - Filter maven resources with filter-file from external dependency

0 个答案:

没有答案