maven の情報を使用して .properties ファイルでプロパティを定義したいと思います。例: app.name=project.build.artifactId。
ビルド時に resources:resources を呼び出すと、(できれば) 私の artifactId を持つ app.name を含む *.properties という名前のファイルが (Eclipse の) TARGET フォルダーに作成されます。
しかし、Eclipse を介して Java アプリケーションを実行すると、/target にあるファイルを使用するのでしょうか、それとも /src/main/resources (値自体ではなく変数プレースホルダーを含む) のバージョンを使用するのでしょうか?
編集:
「フィルター処理された」値を使用したいコードは次のとおりです。
// Get project version from maven resource filtering
static {
Properties prop = new Properties();
try {
// load a properties file
prop.load(new FileInputStream("src/main/resources/project.properties"));
// get the property value and print it out
System.out.println(prop.getProperty("app.version"));
}
catch (IOException ex) {
logger.error("Error (1): Failed to get application version from configuration file");
System.out.println("Unexpected error (1). Aborting...");
}
}
プロジェクトのPOM.xmlからの関連情報:
<build>
<!-- Resource filtering -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>
</build>
project.properties の内容:
app.version=${project.build.version}
(JAR を実行せずに) Eclipse でプロジェクトを実行すると、最初のセグメント (静的ブロック内) の出力は文字通り "${project.build.version}" を返します。プロジェクトのタグの値を実際に返すわけではありません。
resources:resources を最初に実行して、それが何かを行うかどうかを確認することさえ試みましたが、そうではありませんでした。リソース フィルタリングは正確にはどのように機能するのでしょうか。