うわー、それは一度にたくさんの質問です。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.jar
WARファイルに含まれます。
テスト
junitでサーブレットをテストする方法はありますか?
この質問はStackoverflowで質問(および回答)されています:
参考文献