Mavenを使うと依存関係を解消してくれたり色々便利(らしい)。
ただ、最初は色々戸惑ったので、メモしておきます。

今回はStruts2でZero Configurationを目指します。
SpringやHibernateは追々やるとして、まずはMavenでStruts2の雛形を作りました。

開発環境は前回記載したものを使います。
Javaの開発環境構築

プロジェクト作成

コマンドプロンプト(cmd)

cd C:¥work¥workspace
mvn archetype:generate -B -DarchetypeGroupId=org.apache.struts \
    -DarchetypeArtifactId=struts2-archetype-convention -DarchetypeVersion=2.2.3 \
    -DgroupId=ap -DartifactId=struts2

※「[INFO] BUILD SUCCESS」と表示されればOK

プロジェクト情報変更

C:¥work¥workspace¥struts2¥pom.xmlを編集

MacのJDKにはtools.jarがないので、自動判定でMacの場合はclasses.jarを、WindowsやLinuxの場合はtools.jarを使うようにします。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>ap</groupId>
    <artifactId>struts2</artifactId>
    <version>${project.version}</version>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>Struts 2 Blank Convention Webapp</name>

    <properties>
        <struts2.version>${project.version}</struts2.version>
        <struts2.version>2.2.3</struts2.version>
    </properties>

    <profiles>
        <profile>
            <id>default-profile</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <file>
                    <exists>${java.home}/../lib/tools.jar</exists>
                </file>
            </activation>
            <properties>
                <toolsjar>${java.home}/../lib/tools.jar</toolsjar>
            </properties>
        </profile>
        <profile>
            <id>mac-profile</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <file>
                    <exists>${java.home}/../Classes/classes.jar</exists>
                </file>
            </activation>
            <properties>
                <toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
            </properties>
        </profile>
    </profiles>

    <dependencies>
        <dependency>
            <groupId>com.sun</groupId>
            <artifactId>tooks</artifactId>
            <version>1.6.0</version>
            <scope>system</scope>
            <systemPath>${toolsjar}</systemPath>
        </dependency>

<省略>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.4</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.0</version>
            <scope>provided</scope>
        </dependency>

    </dependencies>

<省略>

</project>

Eclipseプロジェクト作成

コマンドプロンプト(cmd)

cd C:¥work¥workspace¥struts2
mvn eclipse:eclipse -Dwtpversion=2.0

※「[INFO] BUILD SUCCESS」と表示されればOK

WARファイルインポート

コマンドプロンプト(cmd)

mvn war:inplace

※「[INFO] BUILD SUCCESS」と表示されればOK

Eclipseにインポート

Eclipseを起動して[ファイル][インポート]

インポート・ソース:Maven -> Existing Maven Projects
Root Directory:/work/workspace/struts2

エラーと警告を解消

下のマーカーに出るエラーと警告を解消して行きます。

[警告]Classpath entry org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER will not be exported or published. Runtime ClassNotFoundExceptions may result.

プロジェクト名を右クリックして[プロパティー]
Deployment Assembly -> Add -> Java Build Path Entries -> Maven Dependencies

[警告]The tag handler class for “s:a” (org.apache.struts2.views.jsp.ui.AnchorTag) was not found on the Java Build Path

・/src/main/webapp/WEB-INF/content/hello.jspを編集
下記の行を一旦削除してから戻すと警告が出なくなる(なぜ?)

         <s:a href="%{url}">English</s:a>

[警告]ビルド・パスは実行環境 J2SE-1.5 を指定しています。

プロジェクト名を右クリックして[プロパティー]
Javaのビルド・パス -> ライブラリー:J2SE-1.5 -> JavaSE-1.6

[エラー]Java compiler level does not match the version of the installed Java project facet.

プロジェクト名を右クリックして[プロパティー]
Project Facets -> Java:1.5 -> 1.6

[警告]インポートされた java.util.logging.Logger は 1 度も使用されていません

/src/main/java/struts2/InitListener.javaを編集

import java.util.logging.Logger;
↓
//import java.util.logging.Logger;

[警告]シリアライズ可能クラス HelloAction は long 型の static final serialVersionUID フィールドを宣言していません

[警告]シリアライズ可能クラス Index は long 型の static final serialVersionUID フィールドを宣言していません

取りあえず無視

[警告]No grammar constraints (DTD or XML schema) detected for the document.

取りあえず無視

[エラー]Validation Message

無視(すべてを選択削除)

動作確認

プロジェクトを右クリック -> デバッグ -> Debug on Server
http://localhost:8080/struts2/

※「Struts is up and running…」と表示されればOK

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

前の記事

Javaの開発環境構築