1. ホーム
  2. maven

Springアプリケーションでmavenのproject.versionプロパティを@Valueで取得できない

2023-09-03 01:32:20

質問

Spring Bootアプリケーションで@Valueアノテーションを使用してmaven project.versionプロパティを取得するにはどうすればよいですか?

どのように解決するのですか?

SpringBootアプリケーションでMavenプロジェクトのバージョンを取得する方法について、いくつかの調査と試行の後、私は私のために動作する何かを見つけることができませんでした。

マニフェストを使用することは、クラス ローダーの問題のために腐った道であることは明らかです。

私が見つけた 1 つの解決策は、リソース ファイル内のプロパティをフィルター (置換) するために maven リソース プラグインを使用することです。この場合、Spring application.properties .

以下は、これを実現するための手順です。

pomファイルで、以下の定義でリソースフィルタリングを有効にします。

<resources>
    <resource>
        <filtering>true</filtering>
        <directory>src/main/resources</directory>
        <includes>
            <include>application.properties</include>
        </includes>
    </resource>
</resources>

の中で application.properties ファイルに記述します。

[email protected]@
[email protected]@
build.timestamp=@timestamp@

property}の代わりに@property@があることに注意してください。 の中にある application.properties ファイル内の

spring-boot-starter-parent を再定義し、標準の ${} というデリミタを @ :

<resource.delimiter>@</resource.delimiter>
<!-- delimiter that doesn't clash with Spring ${} placeholders -->
<delimiters>
    <delimiter>${resource.delimiter}</delimiter>
</delimiters>

次に、Springでこれらのプロパティにアクセスするには @Value を使ってアクセスすることができます。

@Value("${application.name}")
private String applicationName;

@Value("${build.version}")
private String buildVersion;

@Value("${build.timestamp}")
private String buildTimestamp;

サンプルプロジェクトはこちら .