私の基本的なワークフローは、ベース ディレクトリのターミナルで行います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
問題が発生する場所を確認するために実行できるチェックリスト:
- 「ビルド」>「アーティファクトのビルド」を使用して、アーティファクトを手動でビルドします。
- アーティファクトが予想される出力ディレクトリ (out/artifacts/xxx) にあるかどうかを確認します。
- そうでない場合は、「ファイル」>「プロジェクト構造」>「成果物」に進みます。
- 問題のアーティファクト ファイル (この場合は project_name) を選択します。
- 出力ディレクトリが正しいかどうかを確認します。IntelliJ がディレクトリを作成しない場合は、自分でディレクトリを作成してみてください (ただし、これは驚きです)
- 内容が正しいかどうか確認してください。
- オプションで「Build on make」をチェックすると、サーバーを実行するたびに常に最新バージョンのコードがデプロイされます。
WAR ファイルを Tomcat にデプロイする場合は、展開された WAR を使用することをお勧めします。これにより、デプロイ/テスト/デバッグが大幅に高速化されます。