私は、基本的に大幅にカスタマイズされた JBoss デプロイメントである、非常に古いモノリシック ソフトウェアを使用しています。残念ながら、これは JBoss を Eclipse の「サーバー」ビューから起動できないことを意味します。JBoss は Windows サービスとして、またはコマンド ライン経由で起動する必要があります。複数の WAR/EAR がありますが、WAR クラスローダーはめったに使用されず、実際のクラス ファイルのほとんどは jboss/shared/lib に .jar として配置されます。
Eclipse で (m2e 経由で) Maven ビルドを実行し、結果の .jar 内のクラス ファイルを C:/product/jboss/shared/lib にデプロイして、JBoss を起動したときに Eclipse を使用してデバッグできるようにする方法が必要です (リモート Java アプリケーションとして)。理想的には、Maven がプッシュするアーティファクトは、最初にインストールされた既存の .jar ファイルを上書きしません。たとえば、Maven プロジェクトが myjar-1.0.0.jar という名前のアーティファクトをビルドする場合、myjar-1.0.0.jar 内のクラスを C:/product/jboss/shared/lib/classes にデプロイする方法が必要です。製品とともにインストールされた C:/product/jboss/shared/lib/myjar-1.0.0.jar の前に、クラスローダーによってそれらが取得されること。
現在、私たちの(非常にハックな)解決策は次のとおりです。
プロジェクト設定の
Java Build Path
>Source
タブの下で、「symlink」機能を使用しAdvanced
てDefault Output Directory
(例: project/target/classes) をクラス フォルダー (例: C:/product/jboss/shared/lib/classFolder) にマップします。これにより、ソース管理にチェックインされる .project ファイルが変更されます。- 通常、m2e ランチャーを使用してプロジェクトをビルドします (例: クリーン インストール)。
Maven ビルドが成功したと仮定して、Eclipse プロジェクトのビルドを実行します。これにより、クラス ファイルが C:/product/jboss/shared/lib/classFolder にプッシュされます。
- JBoss を再起動します。classFolders は jar よりも優先されるため、JBoss は C:/product/jboss/shared/lib/classFolder のクラスをロードします。これは、Eclipse ワークスペースのクラスと同じです。
- JBoss にアタッチし、プロジェクトをリモート Java アプリケーションとしてデバッグします。
長所:
- 新しいクラスを JBoss にプッシュして、元の jar をバックアップしたり、新しいものを手動でコピー/貼り付けしたりすることなくテストできます (jar 地獄)。
短所:
- 1 回は maven-compiler-plugin を使用して、もう 1 回は Eclipse プロジェクトのビルド (Java Builder) を使用して 2 回コンパイルしています。
- 私の経験では、シンボリックリンク機能はヒットまたはミスです。プロジェクトを更新する/プロジェクトを閉じる/プロジェクトをビルドするダンスを実行して、機能させる必要がある場合があります。
これを行うより良い方法はありますか? すべてのデプロイ可能なものがコンテナーに依存しない WAR になるように、プロジェクトを大幅に再構築するよう強制することはできませんが、開発者は、.jar を手動でコピーして貼り付けることなく、変更を加えてすばやくテストできる必要があります。