29

Maven と Eclipse を使用した Java Web アプリケーションの作成についていくつか質問があります。

  • Maven でサーブレット、jsp、およびその他のクラスを使用して Java Web プロジェクトを作成するにはどうすればよいですか?
  • src->main->java という単純なディレクトリ構造を作成します。web-inf フォルダーはどこに、どのように配置すればよいですか?
  • jdbc-drivers を web-inf/lib 内のフォルダーに手動で追加する必要がありますか? それとも、依存関係を指摘するだけで問題ありませんか?
  • junit でサーブレットをテストする方法はありますか?
4

4 に答える 4

67

うわー、それは一度にたくさんの質問です。MavenとEclipseを使用してWebアプリケーションプロジェクトを設定するのは難しい場合があることを認めているので、それらすべてに答えようとします。

Mavenを使用したWebアプリケーションプロジェクトの作成

サーブレットjspを使用してJavaWebプロジェクトを作成し、Mavenを使用して他のクラスを作成するにはどうすればよいですか?単純なディレクトリ構造、src->main->javaを作成します。

Java Webプロジェクトを作成する場合、最終的な製品はWARまたはEARファイルである必要があります。WARファイルとEARファイルは、アプリケーションサーバーまたはサーブレットコンテナにデプロイできる特定の構造を持つJARファイルです。

前述のように、Webアプリケーション用にMavenプロジェクトをセットアップする最も簡単な方法は、アーキタイプを使用することです。

mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp

このアーキタイプでプロジェクトを作成すると、単純なディレクトリ構造とpom.xmlが生成されます。/src/main/java/このプロジェクトは、、などを使用して、前述の標準のMavenディレクトリレイアウトに従います/src/test/java。Mavenは、war:warゴールを使用してこの構造からWARファイルを生成します。

このアーキタイプは非常に単純な(時代遅れの)Webアプリケーション用ですが、利用可能な最良の出発点であることに注意してください。web.xmlファイルを破棄して、サーブレット3.0をサポートする新しいファイルを作成することをお勧めします。

WEB-INFの場所

web-infフォルダーはどこにどのように配置しますか?

デフォルトでは、Mavenは、WARファイルのルートに配置する必要のあるリソース(画像、htmlページ、WEB-INFディレクトリなど)がに存在することを想定しています/src/main/webapp/したがって、WEB-INFフォルダはに配置する必要があります/src/main/webapp/WEB-INF/maven-archetype-webappを使用する場合、このディレクトリはサンプルのweb.xmlファイルとともに自動的に作成されます。

Eclipse統合

質問のタイトルでEclipseについて言及しましたが、m2eclipseプラグインを使用してEclipseでMavenizedWebアプリケーションを開発することは確かに可能です。Eclipseは、WTP(Web Tools Platform)を介してWebアプリケーションを適切にサポートしています。

インターネット上の多くのガイドが(間違って)それを推奨していますが、Eclipseプロジェクトを作成するためにmvn eclipse:eclipseコマンドを使用しないでください。このプラグインは、非常に古いバージョンのEclipse用のWTPプロジェクトのみを生成できます(WTP 2.0が最大です)。代わりに、ここで説明されているようにm2eclipseプラグインを使用してください。

依存関係

jdbc-driversをweb-inf/lib内のフォルダーに手動で追加する必要がありますか、それとも依存関係を指摘するだけで大​​丈夫ですか?

Mavenの主な強みの1つは依存関係の管理であるため、これを手動で行う必要はありません。コンパイルまたはランタイムのスコープでpom.xmlに依存関係を追加すると、JARファイルは自動的にWEB-INF/lib/WARファイルのディレクトリーに含まれます。たとえば、Postgresql JDBCドライバーの依存関係を追加するには、これをpom.xmlに追加します。

<dependency>
    <groupId>postgresql</groupId>
    <artifactId>postgresql</artifactId>
    <version>9.1-901.jdbc4</version>
</dependency>

スコープが指定されていないため、Mavenはデフォルトのスコープコンパイルにあると想定します。その結果、MavenはWEB-INF/lib/postgresql-9.1-901.jdbc4.jarWARファイルに含まれます。

テスト

junitでサーブレットをテストする方法はありますか?

この質問はStackoverflowで質問(および回答)されています:

参考文献

于 2012-06-05T00:07:04.200 に答える
10

使用しているデフォルトのプロジェクトではなく、webapp Maven アーキタイプに基づいてプロジェクトを作成する必要があります。

この演習では、m2e を使用した Eclipse と同じ SpringSource Tool Suite を使用しています。新しい Maven プロジェクトを作成し、必ず次のアーキタイプを選択してください。

ここに画像の説明を入力

これを行う Maven コマンドラインの方法は次のとおりです。

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp

このアーキタイプは、WEB-INF フォルダーを正しい場所 (src/main/webapp の下) に配置します。

詳細については、http://maven.apache.org/guides/mini/guide-webapp.htmlを参照してください。

于 2012-06-04T20:50:15.353 に答える
9

通常の「動的 Web プロジェクト」を作成するだけです。次に、プロジェクト名を右クリックし、[構成] > [Maven プロジェクトに変換] を選択します。変換が完了するまでに 1 分ほどかかることがありますので、しばらくお待ちください。次の記事を参照してください。

http://aykutakin.wordpress.com/2013/12/04/create-eclipse-dynamic-web-project-with-maven-2/

それでもうまくいかない場合は、これを試してください:

http://crunchify.com/how-to-create-dynamic-web-project-using-maven-in-eclipse/

于 2014-03-21T17:08:10.030 に答える