0

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 を最初に実行して、それが何かを行うかどうかを確認することさえ試みましたが、そうではありませんでした。リソース フィルタリングは正確にはどのように機能するのでしょうか。

4

0 に答える 0