以前、Mavenを使ってStruts2.2アプリを作りましたが、今回は同じ事をSeasar2でやってみました。
DIやLog4j、S2JDBCは追々やるとして、まずはMavenでSeasar2の雛形を作りました。

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

プロジェクト作成

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

cd C:¥work¥workspace
mvn archetype:generate -DarchetypeRepository=https://www.seasar.org/maven/maven2-snapshot/ \
    -DarchetypeGroupId=org.seasar.sastruts \
    -DarchetypeArtifactId=sa-struts-archetype -DarchetypeVersion=1.0.4-sp7.1-SNAPSHOT \
    -DgroupId=ap -DartifactId=seasar2 -Dversion=1.0-SNAPSHOT
Y: : Y

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

Eclipseプロジェクト作成

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

cd C:¥work¥workspace¥seasar2
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/seasar2

エラーと警告を解消

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

[警告]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

[警告]ビルド・パスは実行環境 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

[警告]There is no schema defined for this pom.xml. Code completion will not work without a schema defined.

[警告]No grammar constraints (DTD or XML schema) detected for the document.
/pom.xmlを変更

<?xml version="1.0" encoding="UTF-8"?>
<project>
<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/maven-v4_0_0.xsd">

<省略>

</project>

[エラー]Validation Message

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

動作確認

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

致命的: サーブレット jsp のServlet.service()が例外を投げました
org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: 

上記のエラーが出るがpom.xmlに不要なものがあるのが原因なので、こいつを削除する。
これに気付かず結構ハマった。

/pom.xmlを変更

    <!-- If you want to use J2EE 1.4 server(not Tomcat), 
         add geronimo-jta_1.1_spec-1.0-tsr.jar -->
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-jsp_2.0_spec</artifactId>
      <version>1.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.geronimo.specs</groupId>
      <artifactId>geronimo-servlet_2.4_spec</artifactId>
      <version>1.0</version>
      <scope>provided</scope>
    </dependency>

http://localhost:8080/seasar2/
※「Hello!」と表示されればOK

おまけ

アプリ名を設定しておきます。
こいつはデプロイ後にTomcat Managerに表示されます。

/src/main/webapp/WEB-INF/web.xml

<省略>

<web-app
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">
    <display-name>Struts Blank Convention</display-name>

<省略>

あと、nameとsa-strutsのバージョンをプロパティに定義しておきます。

/pom.xmlを変更

<省略>

  <packaging>war</packaging>
  <name>Seasar 2 Blank Convention Webapp</name>
  <properties>
    <sa-struts.version>1.0.4-sp7</sa-struts.version>
  </properties>

<省略>

    <dependency>
      <groupId>org.seasar.sastruts</groupId>
      <artifactId>sa-struts</artifactId>
      <version>1.0.4-sp7</version>
      <version>${sa-struts.version}</version>
    </dependency>

<省略>

コメントを残す

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