7

私はIntellij Idea 12を使用しており、マルチモジュールのmavenプロジェクトを持っています。

簡単にするために、私が持っていると仮定しましょう:

  • モジュール A - JAR にコンパイル
  • モジュール B - モジュール A に依存し、JAR にもコンパイルされます
  • モジュール C - モジュール B に依存しますが、WAR にコンパイルされます

Intellijにはmavenプロジェクト用の独自のビルドメカニズムがあることを知っているので、WARを初めてビルドしてTomcatにデプロイすると、通常はすべて正常に動作します。問題は、モジュール A などのサブモジュールの 1 つを変更し、戦争を再構築する (モジュール C を再構築する) 必要がある場合に発生します。

Intellij は、以前にビルドされた古いモジュール A jar を使用しているように見え、モジュール C を作成/ビルドするときにモジュール A で行った変更を無視します。

これを解決するために私が見つけた唯一の方法は、モジュール A と B で Maven ビルドを実行し、最初に Maven で WAR をビルドし、それを外部ソースとしてデプロイすることです。

問題は、デプロイしたい 10 個の WAR と、jar にコンパイルされた 20 個を超えるサブモジュールがあることです。1 つの WAR に影響するサブモジュールの 1 つで行った変更のみを確認したい場合、すべての war を再構築するのは意味がありません。また、Intellij Ultimate ライセンスを購入しながら、コマンド ラインを使用して外部でビルドするのは意味がありません (アプリケーション サーバーで作業できるようにするため)。

この動作を他の IDE と比較します。2. Eclipse はその内部メカニズムで同じことを行いますが、WAR プロジェクトが再構築されるとすべての JAR が更新されます。(または、機能する他の魔法)

IDEA で別の方法で動作する方法はありますか、それともありませんか?

4

2 に答える 2

1

最終的に、これに対するハイブリッド ソリューションを見つけました。Tomcat を実行する前に行うこと:

  1. すべて消去
  2. JAR にする必要があるすべてのプロジェクトをビルド、パッケージ化、および (リポジトリに) 登録する
  3. コンパイルのみ (ビルドしない) WAR プロジェクト
  4. Intellij を使用して WAR アーティファクトをビルドします (これは、ホット スワップを利用できるようにするために必要です)

これがTomcatの起動方法です。

詳細な情報:

  1. 3 つの Maven 実行構成を作成する

    1.1すべてのプロジェクトを消去すべてのプロジェクトの Maven Cleanします。 1.2 JAR アーティファクトを使用してすべてのプロジェクトをビルドします。「-pl」maven オプションを使用して、すべてのプロジェクトを手動で含める必要があります。オプションで、この構成を起動する前に瓶を作る「 Maven clean 」を実行できます (スクリーンショットを参照)WAR をコンパイルする

  2. Tomcat 構成を作成して War アーティファクトをビルドし、起動前に実行する他の構成を含めるここに画像の説明を入力

Tomcat を実行すると、コードの変更をホットスワップ (JVM で許可されている場合) したり、サーバーを再起動してすべての新しいコード/変更を含めることができます。これの欠点は、Tomcat の起動時間がやや長くなることです。それは私たちが喜んで一緒に暮らすものです.....今のところ

于 2013-06-02T07:35:48.620 に答える