2011-09-21 15 views
11

私は、マグノリアベースのウェブサイトを開発しています。私はwebappのアーキタイプを使って新しいWebアプリケーションを作成しています。コマンドラインを使用して私はWARを生成し、それをコンテナ(Tomcat)に展開できます。私はそれを実行し、それは正常に動作します。IntelliJを使用したwebapp実行コンフィギュレーションでMavenオーバーレイを使用しますか?

私の次のステップは、私のプロジェクト構造をIntelliJにインポートすることでした。 IntelliJはすべてがうまくいくとみなし、すべてをコンパイルすることができます。私は最初にMavenをクリーンにしてテストした後、IntelliJに残りの作業をさせます(プロジェクトを再構築してください)。

最後のステップは、自分のコンテナで実行させることです。私はWebアプリケーションの前に(彼らは戦争のオーバーレイを使用しないで)実行コンフィギュレーションをセットアップしており、うまくいきました。この場合、前と同じように設定し、展開されたWebappアーティファクトをポイントします。

私はtomcatを実行すると、私のwebappを見つけることができません。私は、オーバーレイがプロジェクトのターゲットディレクトリにマージされていないことを知っています(通常は、mavenをインストールするだけです)。 IntellJはプロジェクト内にoverlaysディレクトリを作成してそこに(オーバーレイ/スーパー)WARファイルを展開しました。

自分自身でmavenをインストールした後、IntelliJでTomcatを実行すると動作します。どのような種類の必要なファイルがターゲットディレクトリ(たとえばweb.xmlなど)にあるので、明らかです。

私が欲しいのは: - IntelliJは、Tomcatを実行するとき、 "mvn install"や "mvn package"のようにターゲットディレクトリを準備しておくべきであることを知っています。

説明: - それは何かをします。ターゲットディレクトリを作成し、webappプロジェクトからリソースをコピーします。 WAR依存関係をオーバーレイしないので、webappターゲットディレクトリは不完全です。

誰でもこれを解決するためのヒントがありますか?

答えて

10

実行コンフィギュレーションで "run maven goal"チェックボックスをチェックし、mvn packageを設定すると動作するようになりました。

+0

これにより、「クラスの更新」もできますか?あるいは、すべての変更を見るために再展開する必要がありますか? – Abhimanyu

+1

更新クラスを実行すると、クラスがメモリに読み込まれ、クラスが動作します。しかし、複数の依存関係を使用している場合は、次にコンテナを起動するときに、コンテナ(つまりtomcat)も最新の依存関係のソースを確認する必要があることに注意してください。私はこれがかなり厄介であることが判明しました。私はこれらの依存関係をクリーンアップして、ローカルリポジトリのどこにいるか確認しなければなりませんでした。そして、その方法で、mvnパッケージの目標はそれらを正しく引き上げるでしょう。 –

+0

@StefanHendriks:チップをありがとう。私はオーバーレイの定義がIntelliJによって無視されているのと同様の問題がありました。 IntelliJは、独自の内部ビルドメカニズムを使用してWebアプリケーションを構築するときに、Maven-War-Pluginの設定の一部を無視するようです。 warビルドをmavenに委譲するように指示すると、war-plugin config全体が尊重されます。 – skaffman

関連する問題