現在、R42フレームワークの開発においては3つのプロジェクトに分割して開発しています。
R42フレームワークは残りの2つが依存しているプロジェクトになります。
なお、プロジェクトの依存関係の設定についてはこちらの記事を参照して下さい。
このとき、r42fw_codegenに所属するJUnitを実行した時に、なぜかクラスパス上に存在するはずのr42fw側のリソースファイル(*.propertiesとか)を読みに行かないという現象が発生して困っていました。
これは要するに、r42fw_codegenに所属するJUnitを実行しても、その実行コンテキスト上に
クラスパスr42fw/target/classes
が含まれていないということです。
いろいろ調べた結果、先程解決方法が判りました。
解決には、僕にとってこれまで謎の機能だった「ビルドパスのエクスポート」を使います。
ビルドパスのエクスポートとは?
簡単に説明すると「依存プロジェクトのクラスパスを被依存プロジェクトへ自動的に追加する」機能です。
例えば、r42fwのビルドパスがStruts2を含む場合、r42fwに依存しているr42fw_sampleはStruts2を自前でビルドパスに加えなくても、r42fwに依存していると設定した時点で自動的に追加されるということです。
依存プロジェクトのクラスパスを単体テスト時に参照させる方法
まず、ライブラリーに依存プロジェクトのクラスファイル出力先フォルダーを指定します。
指定するには「クラス・フォルダーの追加」ボタンを押してください。この例ではr42fw/target/classes
を追加しています。
次に、先程追加したr42fw/target/classes
をエクスポートした上で、こいつを一番上に持ってきます。これがポイントです。
この設定を行うことで、r42fw_codegenプロジェクトのJUnitを実行すると、r42fw/target/classes
フォルダがクラスパスに含まれるようになります。
従ってこのフォルダ内のリソースファイルも読めるようになります。
なんかもうちょっと素直な設定方法があるような気がしてならないけれども、とりあえず今日はこれで良しとします。