S_a_k_Uの日記みたいなDB

~サクゥーと呼ばないで~

Eclipseでjarファイルを作成する場合のプロパティファイルやXMLファイルの優先順位

Eclipse3.4.0
Eclipseのエクスポート機能を使って、「ソースのリンク」を含むプロジェクトのjarファイルを作成した場合。

プロジェクトの構成

当該プロジェクトは、プロジェクト内のソースと「ソースのリンク」機能を使って外部のソースを、ビルドパスとして構成している。
ビルドの順番は、外部のソース→プロジェクト内のソースとしている。

ビルドの出力フォルダとjarファイルに格納されるプロパティファイル

外部のソースにプロパティファイル(A)(実際はlog4j.properties)を配置しているが、当該プロジェクトでは記述を変更するため、プロジェクト内のソースの同じパスにも異なる記述のプロパティファイル(B)を配置している。
その場合に、
・ビルドの出力フォルダには、プロジェクト内のソースのプロパティファイル(B)
・エクスポート機能を使って作成したjarファイルには、外部のソースのプロパティファイル(A)
が格納されている。

ビルドの出力フォルダとjarファイルに格納されるJavaのクラスファイル

但し、Javaクラスのソースファイルについては、全く同じパッケージ/クラスを、外部のソースとプロジェクト内のソースに配置しているが、クラスファイル(.class)については、ビルドの出力フォルダもjarファイルも、ビルドの順番通りプロジェクト内のソースのJavaクラスが格納されている(意図した通りの動作)。
追記)2009/04/23
「重複したクラスがある」とコンパイルエラーが検出される。

挙動の確認

コンパイルの対象となるリソース(*.java)か、そうでないかによって動作が異なるのか?と思い、XMLファイルで試した所、プロパティファイルと同様の動作となり、
・ビルドの出力フォルダには、プロジェクト内のソースのXMLファイル
・エクスポート機能を使って作成したjarファイルには、外部のソースのXMLファイル
が格納されていた。


(ビルドの順番は、外部のソース→プロジェクト内のソース)
【ビルドの出力フォルダ】

  プロジェクト内のリソース ソースのリンクで参照する
外部のリソース
プロパティファイル ×
XMLファイル ×

【エクスポート機能を使って作成したjarファイル】

  プロジェクト内のリソース ソースのリンクで参照する
外部のリソース
プロパティファイル ×
XMLファイル ×

対応方法

・外部のソースのリソースを、除外フィルターの構成に設定する。
・プロジェクト内に、プロパティファイルやXMLファイル用のソースフォルダを別途作成し、ビルドの順番を最初にする。