質問: 同じ構造を持つjarライブラリがあります。 それぞれのjarライブラリはデバッグ接続用、リリース接続用のような感じで **jarを切り替えるだけでそれら処理が切り替わるように内部には同じパッケージで同じクラスが存在**します。 eclipseのプロジェクトにて、**プログラミングするときだけこれらをクラスパスに含め** エラーが出ないように&メソッドなどがわかるように(リフレクションなしで普通に開発できるように)して、**実際にjarを出力するときにはこれらjarをクラスパスから除外**し、 でもjarには内包して定義したクラスローダーから動的に切り替えようと思いました。 が、うまくいきませんでした。 この方法で実現可能な方法はありますか?(jarに含めたライブラリを動的に切り替える でもプログラミングするときは可視的に行いたいのでクラスパスに含めたときと同じ感覚で行いたい) 一番それっぽいことは試しました。 > > ・Java Build Path 設定にて jarライブラリを追加する これにより開発時には普通にプログラミングできる > > > ・jar生成時にクラスパスに通さないために RunConfiguration の クラスパス タブにて User Entries を消して > > Add > > Project で再度追加して ライブラリjar を除外しましたが、これを行うと jar に jarライブラリが含まれない状態になってしまいました。 > > >
回答: 複雑な仕組みを考える必要はなく、単に開発時とリリース時でビルド設定を分ければ良いだけかと思います。 つまり、開発時にはデバッグ接続用jarライブラリのみを依存関係に含め、リリースビルドではリリース接続用jarライブラリのみを依存関係に含めれば良いのでは、ということです。 上記を実現する手段は何通りもありますが、1例としては次のような設定法があります。 * 開発時依存関係設定は現状のEclipseの設定を用いる * リリース時ビルド(リリース時依存関係設定)はMavenを用いる 前者は既に行えていることですので、後者のリリースビルド設定をMavenの`pom.xml`に書き下せば良いだけです。 このような方法はEclipseプロジェクト設定とMavenの`pom.xml`に設定が散在するので管理上問題がある、ということであれば、双方の設定をMavenで管理し、開発向け/リリース向けをprofileで切り替える方法(1例として次のリンク参照)もあります。 * mavenで環境ごとに使うjarを変える - quartetteの日記 現行バージョンのEclipseはMaven設定を取り込めますしprofileの切り替えも行えますのでMaven管理することに障害は無いと考えます。