従来のMavenディレクトリを使用する場合、log4j.propertiesファイルをどこに配置すればよいですか?
従来のMavenディレクトリを使用する場合、log4j.propertiesファイルをどこに配置すればよいですか?
回答:
src/main/resources
これは「標準配置」です。
更新:上記は質問に答えますが、最善の解決策ではありません。これに関する他の回答とコメントを確認してください。おそらく、jarを使用して独自のロギングプロパティを出荷するのではなく、クライアント(アプリサーバー、ステージ環境など)に任せて、必要なロギングを構成します。したがって、それを入れることsrc/test/resources
が私の好ましい解決策です。
注:クライアント/ユーザーに具体的なログの設定を残すといえば、あなたは置き換えることを検討すべきであるlog4j
とslf4j
あなたのアプリに。
resources
とlog4j.properties
の回答で述べたフォルダにあります。
src/main/resources
にあるファイルはデフォルトでにコピーされますtarget/classes
それを入れるだけでsrc/main/resources
、アーティファクト内にバンドルされます。たとえば、アーティファクトがJARの場合、log4j.properties
その中にファイルがあり、ロギングを構成可能にするという最初のポイントが失われます。
私は通常それをに入れsrc/main/resources
、ターゲットに出力するように設定します:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<targetPath>${project.build.directory}</targetPath>
<includes>
<include>log4j.properties</include>
</includes>
</resource>
</resources>
</build>
さらに、log4jが実際にそれを見るには、クラスパスに出力ディレクトリを追加する必要があります。アーティファクトが実行可能JARである場合は、maven-assembly-pluginを使用して作成した可能性があります。そのプラグイン内で、次のClass-Path
ようにマニフェストエントリを追加することにより、JARの現在のフォルダーをクラスパスに追加できます。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>com.your-package.Main</mainClass>
</manifest>
<manifestEntries>
<Class-Path>.</Class-Path>
</manifestEntries>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
<phase>package</phase> <!-- bind to the packaging phase -->
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
これで、log4j.propertiesファイルがJARファイルのすぐ隣にあり、個別に構成できます。
エクリプスから直接アプリケーションを実行するには、追加resources
あなたの実行構成で、あなたのクラスパスにディレクトリを:Run->Run Configurations...->Java Application->New
選択しClasspath
、タブを選択Advanced
し、あなたを参照src/resources
ディレクトリ。
${project.build.directory}
か、プロジェクトがローカルドライブに存在する実際のパスに編集する必要がありますか?
それを説明するいくつかの「データマイニング」がsrc/main/resources
典型的な場所です。
Googleコード検索の結果:
src/main/resources/log4j.properties
:4877src/main/java/log4j.properties
:215 resources
ではないresource
、私の記憶が正しければ、。
resource
単なるタイプミスでした。
プロジェクトの初期化に使用されるリソースは、src / main / resourcesフォルダーに配置するのが望ましいです。ビルド中にこれらのリソースのロードを有効にするには、ビルドリソースとしてmavenプロジェクトのpom.xmlにエントリを追加するだけです
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
その他の.propertiesファイルも、初期化に使用されるこのフォルダーに保持できます。リソースフォルダーのプロパティファイルにいくつかの変数を設定し、プロファイルとして設定されているsrc / main / filtersに保持されているプロファイルフィルタープロパティファイルから変数を設定する場合、フィルタリングはtrueに設定されますが、これは完全に異なるユースケースです。現時点では、それらを無視できます。
これは素晴らしいリソースmavenリソースプラグインで、他のセクションも閲覧するだけで便利です。
ビルドタグ内のpom.xmlのリソースタグから以下のコードを追加します。つまり、リソースタグはpom.xmlのビルドタグ内にある必要があります
<build>
<resources>
<resource>
<directory>src/main/java/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<build/>