Intellij を使用して War をビルドし、Tomcat にデプロイする 質問する

Intellij を使用して War をビルドし、Tomcat にデプロイする 質問する

私の基本的なワークフローは、ベース ディレクトリのターミナルで行いますmvn clean install。これにより、WAR ファイルを含むターゲット ディレクトリが作成されます。その war ファイルを Tomcat の webapps ディレクトリにコピーします。

変更を加えると、当然、面倒なプロセスを繰り返さなければなりません。私はIntellij Ultimate 13.1.6を使用していますが、IDEを使用してこれらすべてを実行できることはわかっています。このガイド

そのため、開始する前に、mvn cleanターゲット ディレクトリを削除するベースを実行します。

まず、プロジェクト構造 --> 成果物 に移動し、新しい Web アプリケーション: アーカイブを作成しました。project_name という名前を付け、デフォルトでは異なる出力ディレクトリ (baseDir/out/artifacts/project_name と baseDir/target) が設定されていましたが、すべてをデフォルトのままにして [OK] をクリックしました。

次に、「実行」->「構成の編集」に進み、次の設定を使用して新しいローカルTomcatサーバーを作成します。ここに画像の説明を入力してください

そして、展開タブで、図に示すように起動前に構築されたアーティファクトを追加します。非常に簡単です。

しかし、Intellij 経由でサーバーを実行すると、正常に起動しますが、何もデプロイされません。次のエラーが発生します。

Artifact project_name: com.intellij.javaee.oss.admin.jmx.JmxAdminException: com.intellij.execution.ExecutionException: /Users/path/to/workspace/project_name/out/artifacts/project_name/project_name.war not found for the web module.

そして、ディレクトリを再確認しましたが、エラーに示されているように、何も作成されていません。出力ディレクトリさえも作成されていません。

何が間違っているのでしょうか? 回避策の 1 つは、ターミナルに戻って実行し、作成されたmvn clean install.war ファイルを展開構成に配置することです。まだコマンド ラインで実行しているため、これはハックのように感じました。まだビルドしていない場合は、ターゲットをディレクトリとして設定して war ファイルを見つけることはできません。

ご協力いただければ幸いです。

ベストアンサー1

問題が発生する場所を確認するために実行できるチェックリスト:

  1. 「ビルド」>「アーティファクトのビルド」を使用して、アーティファクトを手動でビルドします。
  2. アーティファクトが予想される出力ディレクトリ (out/artifacts/xxx) にあるかどうかを確認します。
  3. そうでない場合は、「ファイル」>「プロジェクト構造」>「成果物」に進みます。
  4. 問題のアーティファクト ファイル (この場合は project_name) を選択します。
  5. 出力ディレクトリが正しいかどうかを確認します。IntelliJ がディレクトリを作成しない場合は、自分でディレクトリを作成してみてください (ただし、これは驚きです)
  6. 内容が正しいかどうか確認してください。
  7. オプションで「Build on make」をチェックすると、サーバーを実行するたびに常に最新バージョンのコードがデプロイされます。

WAR ファイルを Tomcat にデプロイする場合は、展開された WAR を使用することをお勧めします。これにより、デプロイ/テスト/デバッグが大幅に高速化されます。

おすすめ記事