Eclipse
ビルド

「リソースは <ファイル名> の複製であるため、出力フォルダーにコピーされませんでした」というEclipse警告について

More than 3 years have passed since last update.

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 > コンパイラー > ビルド」にある、
出力フォルダーの重複リソースが該当する。

image

この設定は「無視」にできないため、メッセージを消すためには正しく対応する必要がある。

参考

http://help.eclipse.org/luna/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Freference%2Fpreferences%2Fjava%2Fcompiler%2Fref-preferences-building.htm

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のビルド・パスの変更

出力先のデフォルトは、以下のようにソース・フォルダー全てで共通となっている。

image

なので「ソース・フォルダーごとに出力フォルダーの指定を可能にする」のチェックを外し、mainとtestがそれぞれ別のフォルダに出力されるように変更していく。

変更例

  1. 「デフォルトの出力フォルダー」を reins/bin から reins/bin/main に変更する。(mainソースのパスにする)
  2. src/mainフォルダ配下の全ソース・フォルダーの「出力先フォルダー」を bin/main に変更する。 image
  3. src/testフォルダ配下の全ソース・フォルダーの「出力先フォルダー」を bin/test に変更する。

全て設定すると以下のようになる。

image

プロパティーをOKボタンで閉じるとフルビルドが走り、当該警告が消えていることが確認できると思う。

放置しがちなビルド警告だが、testのクラスが本番資材に含まれている可能性もあるため、対応するようにした方が良い。