プロジェクトのセットアップ
以降では、WTPの動的Webアプリケーションプロジェクトを作成し、M2プラグインを使用してMavenのサポートを有効化します。具体的には、以下の作業について詳しく説明していきます。
- プロジェクトのフォルダ構成とJavaのビルド設定をMavenに合わせて変更する
- 特定のWTPメタデータファイルをMavenに合わせて変更する
- WTPがpom.xmlを使用するように設定する
その前に、MavenのWebプロジェクトを作成し、M2プラグインの概要を理解しておきましょう。
Maven Webプロジェクトの作成
[File]→[New]→[Other]→[Maven]→[Maven Project]の順に選択し、[New Maven2 project]ウィザードを起動します。表2に示す値をウィザードの各ページに入力します。赤字で示した部分以外は、デフォルト値をそのまま使用してください。
ページ | データ |
ページ1 | |
Project Name | tempForRef |
[Create in Workspace]ラジオボタン | このボタンを選択 |
ページ2 | |
Group ID | tempForRef |
Artifact ID | tempForRef |
Version | 0.0.1-SNAPSHOT |
Packaging | war |
Description | 空白、または適切な説明を入力 |
Project Layout | src/main/java、src/main/resources、src/test/java、src/test/resources、src/main/webappのチェックボックスをオンにする |
ページ3 | 変更なし |
このM2プロジェクトをWTPの動的Webプロジェクトに変換できるのか疑問に思うかもしれません。もちろん、変換は可能です。ただし、WTPの動的WebプロジェクトをM2プロジェクトに変換する方が、M2プロジェクトを動的Webプロジェクトに変換するよりも簡単です。
M2プロジェクトが作成できたので、次は動的Webプロジェクトを作成します。
動的Webプロジェクトの作成
[File]→[New]→[Other]→[Web]→[Dynamic Web Project]の順にメニューを選択して、動的プロジェクトを新規作成します。プロジェクト名をsample1にし、それ以外はすべてデフォルトのままにします。Java EEパースペクティブに進むかどうか聞かれたら、[Yes]をクリックして先に進みます。
表3に各ページの値を示します。値の入力が必要なのはプロジェクト名だけです。
ページ | データ |
ページ1 | |
Project Name | sample1 |
Project Contents | デフォルト値を使用(ディレクトリ) |
Target Runtime | Apache Tomcat v6.0 |
Configurations | Apache Tomcat v6.0のデフォルトの設定 |
ページ2 | |
Dynamic Web Module | デフォルト値を使用 |
Java | デフォルト値を使用 |
ページ3 | |
Context Root | sample1 |
Content Directory | WebContent |
Java Source Directory | src |
次は、このプロジェクトでM2プラグインを使用します。
Mavenの有効化
プロジェクトを右クリックし、ポップアップメニューで[Maven]→[Enable Dependency Management]の順に選択してMavenを有効化します。POM作成ウィザードが起動します(図3)。
[Packaging]に[war]を選択して[Finish]ボタンをクリックします。
統合を完了するために、Mavenを有効化した後で以下の手順も実行する必要があります。
- Mavenのフォルダ構成を作成する
- ソースフォルダを更新する
- WTPの内部をいくつか自分で調整する
- J2EEモジュールの依存関係を設定する
Mavenのフォルダ構成の作成
[Window]→[Show View]→[Other]→[General]→[Navigator]の順に選択してナビゲータビューを開きます。動的プロジェクトのフォルダ構成は、デフォルトではMavenと異なっており、これが統合を妨げています。プロジェクトのフォルダ構成を、Mavenの典型的な構成に変更してください。これには以下の2とおりの方法があります。
- ナビゲータビューを使用して、先ほど作成したMavenプロジェクト(tempForRef)に移動します。srcフォルダとtargetフォルダをコピーします。再度ナビゲータビューでsample1プロジェクトに移動し、そこにフォルダを間違えないように貼り付けます。
- [File]→[New]→[Folder]の順に選択して、src/main/java、src/main/resources、src/main/webapp、src/test/java、src/test/resources、target/classes、target/test-classesの各フォルダを作成します。
ソースフォルダの更新
動的プロジェクトのJavaビルド設定(ソースフォルダとアウトプットフォルダ)も、デフォルトではM2との統合が可能な状態ではありません。Javaコード用のソースフォルダの設定が必要です。これは手動でやることも、メニューから自動的に設定することもできます。手動であれば、わずかな手間ですべての設定を一度に行えるので、ここでは手動で行うことにします。
sample1プロジェクトで、ナビゲータビューを使用して.classpathファイルを開きます。このファイルの内容は以下のようなものです。
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src"/> <classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse. jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0"/> <classpathentry kind="con"
path="org.eclipse.jst.j2ee.internal.module.container"/> <classpathentry kind="con"
path="org.eclipse.jst.j2ee.internal.web.container"/> <classpathentry kind="con"
path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/> <classpathentry kind="output" path="build/classes"/> </classpath>
実際のファイルは、これと完全に同じではないかもしれません。たとえば、このXMLに記述されているTomcatのバージョン情報は違う可能性もあります。また、org.eclipse.jst.j2ee.internal.module.containerのエントリはWTP 2.0.1にはありますが、WTP2.0にはありません。変更の必要がある箇所を太字で示していますので、XMLのテキスト全体をコピーして貼り付けるのではなく、このファイルを直接編集し、太字の箇所を変更してください。
<?xml version="1.0" encoding="UTF-8"?> <classpath> <classpathentry kind="src" path="src/main/java"/> <classpathentry kind="src" path="src/main/resources"/> <classpathentry kind="src" output="target/test-classes" path="src/test/java"/> <classpathentry kind="src" output="target/test-classes" path="src/test/resources"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse. jst.server.tomcat.runtimeTarget/Apache Tomcat v6.0"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/> <classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.web.container"/> <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/> <classpathentry kind="output" path="target/classes"/> </classpath>