2

私は、基本的に大幅にカスタマイズされた 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 の前に、クラスローダーによってそれらが取得されること。

現在、私たちの(非常にハックな)解決策は次のとおりです。

  1. プロジェクト設定のJava Build Path>Sourceタブの下で、「symlink」機能を使用しAdvancedDefault Output Directory(例: project/target/classes) をクラス フォルダー (例: C:/product/jboss/shared/lib/classFolder) にマップします。これにより、ソース管理にチェックインされる .project ファイルが変更されます。

    シンボリックリンクの狂気

  2. 通常、m2e ランチャーを使用してプロジェクトをビルドします (例: クリーン インストール)。
  3. Maven ビルドが成功したと仮定して、Eclipse プロジェクトのビルドを実行します。これにより、クラス ファイルが C:/product/jboss/shared/lib/classFolder にプッシュされます。

    クラスフォルダ

  4. JBoss を再起動します。classFolders は jar よりも優先されるため、JBoss は C:/product/jboss/shared/lib/classFolder のクラスをロードします。これは、Eclipse ワークスペースのクラスと同じです。
  5. JBoss にアタッチし、プロジェクトをリモート Java アプリケーションとしてデバッグします。

長所:

  • 新しいクラスを JBoss にプッシュして、元の jar をバックアップしたり、新しいものを手動でコピー/貼り付けしたりすることなくテストできます (jar 地獄)。

短所:

  • 1 回は maven-compiler-plugin を使用して、もう 1 回は Eclipse プロジェクトのビルド (Java Builder) を使用して 2 回コンパイルしています。
  • 私の経験では、シンボリックリンク機能はヒットまたはミスです。プロジェクトを更新する/プロジェクトを閉じる/プロジェクトをビルドするダンスを実行して、機能させる必要がある場合があります。

これを行うより良い方法はありますか? すべてのデプロイ可能なものがコンテナーに依存しない WAR になるように、プロジェクトを大幅に再構築するよう強制することはできませんが、開発者は、.jar を手動でコピーして貼り付けることなく、変更を加えてすばやくテストできる必要があります。

4

3 に答える 3

2

アーティファクトを別の場所にコピーする可能性のあるmaven-dependency-pluginを見てみます。

于 2012-04-23T16:11:48.173 に答える
2

歳は何歳ですか?

Cargo プラグインを見たことがありますか? http://cargo.codehaus.org/Quick+start

JBoss 3.x にデプロイできます。Java API があるため、何かを記述して拡張し、必要なことを実行できるはずです。

jar ファイルの代わりにクラスをデプロイしようとしているのはなぜですか? jar ファイルを使用して Eclipse 経由でリモート デバッグを行うこともできます。

最悪のシナリオ - Ant を使用します。Maven はこの種のもの用に設計されていません。強制的に機能させようとすると、苦痛が生じるだけです。
Maven で適切なアーティファクトを生成したら、手動で何をするかを考え、Ant を介してそれをスクリプト化します。

于 2012-07-11T05:08:36.097 に答える
0

展開アセンブリ (プロジェクト -> プロパティ -> 展開アセンブリ) を確認し、Maven ライブラリがそこにあるかどうかを確認してください。

于 2012-07-09T13:55:40.733 に答える