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ファイル用のソースフォルダを別途作成し、ビルドの順番を最初にする。