Eclipseのビルド警告に関する小ネタ
リソースは src/main/resources/log4j2.xml の複製であるため、出力フォルダーにコピーされませんでした
ビルドして動作もするのに「リソースは src/main/resources/log4j2.xml の複製であるため、出力フォルダーにコピーされませんでした」というようなメッセージが出ている場合の対処方法について記載する。
ちなみに英語だと以下のメッセージで表示される。
「The resource is a duplicate of src/main/resources/log4j2.xml and was not copied to the output folder」
この警告に関する設定は「Java > コンパイラー > ビルド」にある、
出力フォルダーの重複リソースが該当する。
この設定は「無視」にできないため、メッセージを消すためには正しく対応する必要がある。
参考
Duplicated resources
"Indicate the severity of the problem reported when more than one occurrence of a resource is to be copied into the output location."
警告への対応
この警告は、ビルドの出力フォルダの同フォルダ上に同名のファイルをコピーしようとしている場合に発生する。
このlog4j2.xmlの場合は、すでにmain配下のファイルをコピーしているのに、test配下のファイルもコピーして上書きしようとしているため、コピーしなかったという情報を警告で表示していることになる。
解決させるためには、プロジェクトのプロパティを変更し、パッケージごとの出力先を変更する必要がある。
プロパティ:Javaのビルド・パスの変更
出力先のデフォルトは、以下のようにソース・フォルダー全てで共通となっている。
なので「ソース・フォルダーごとに出力フォルダーの指定を可能にする」のチェックを外し、mainとtestがそれぞれ別のフォルダに出力されるように変更していく。
変更例
- 「デフォルトの出力フォルダー」を reins/bin から reins/bin/main に変更する。(mainソースのパスにする)
- src/mainフォルダ配下の全ソース・フォルダーの「出力先フォルダー」を bin/main に変更する。
- src/testフォルダ配下の全ソース・フォルダーの「出力先フォルダー」を bin/test に変更する。
全て設定すると以下のようになる。
プロパティーをOKボタンで閉じるとフルビルドが走り、当該警告が消えていることが確認できると思う。
放置しがちなビルド警告だが、testのクラスが本番資材に含まれている可能性もあるため、対応するようにした方が良い。