Mavenを使って、Struts1.xのプロジェクトを作成する


Struts1.xの開発もすでに終了しており、今更新規でStruts1.xの環境を構築することはほとんどないと思います。
情報も少なくなってきているので、もし新規でStruts1.xのプロジェクトを作りたくなった時に思い出せるように残しておきます。

# Struts1.xのプロジェクトを作成する

今回は、以下の様な条件を考えてみます。

* Eclipse(Luna)を使用して開発を行う
* m2e、WTPを使用して開発を行う
* 構成はMavenで構築を行う
* Java8を使用する

## Mavenプロジェクトを作成する
Struts1 Blank Archetypeを使用してプロジェクトを作成します。

### Struts1 Blank Archetypeのソースをチェックアウトする

```Bash
svn co http://svn.apache.org/repos/asf/struts/maven/trunk/struts-archetype-blank
```

### ビルド及びインストール

```Bash
cd struts-archetype-blank
mvn install
```

### Struts1プロジェクトを作成

```Bash
mvn archetype:generate \
 -DarchetypeGroupId=org.apache.struts \
 -DarchetypeArtifactId=struts-archetype-blank \
 -DarchetypeVersion=1.3.5-SNAPSHOT \
 -DgroupId=com.example \
 -DpackageName=com.example.projectname  \
 -DartifactId=my-webapp
```

```Bash
% mvn archetype:generate \
>  -DarchetypeGroupId=org.apache.struts \
>  -DarchetypeArtifactId=struts-archetype-blank \
>  -DarchetypeVersion=1.3.5-SNAPSHOT \
>  -DgroupId=com.example \
>  -DpackageName=com.example.projectname  \
>  -DartifactId=my-webapp
[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> maven-archetype-plugin:2.3:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO] 
[INFO] <<< maven-archetype-plugin:2.3:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO] 
[INFO] --- maven-archetype-plugin:2.3:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[WARNING] Archetype not found in any catalog. Falling back to central repository (http://repo.maven.apache.org/maven2).
[WARNING] Use -DarchetypeRepository=<your repository> if archetype's repository is elsewhere.
Downloading: http://repo.maven.apache.org/maven2/org/apache/struts/struts-archetype-blank/1.3.5-SNAPSHOT/maven-metadata.xml
[INFO] Using property: groupId = com.example
[INFO] Using property: artifactId = my-webapp
Define value for property 'version':  1.0-SNAPSHOT: : 
[INFO] Using property: package = com.example
Confirm properties configuration:
groupId: com.example
artifactId: my-webapp
version: 1.0-SNAPSHOT
package: com.example
 Y: : 
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: struts-archetype-blank:1.3.5-SNAPSHOT
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: /Users/xxxx/Desktop
[INFO] Parameter: package, Value: com.example
[INFO] Parameter: groupId, Value: com.example
[INFO] Parameter: artifactId, Value: my-webapp
[INFO] Parameter: packageName, Value: com.example
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /Users/xxxx/Desktop/my-webapp
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 21.546 s
[INFO] Finished at: 2015-06-10T15:43:20+09:00
[INFO] Final Memory: 12M/119M
[INFO] ------------------------------------------------------------------------
```

Mavenプロジェクトが生成されました。

```
% tree my-webapp 
my-webapp
├── pom.xml
└── src
    └── main
        ├── resources
        │   └── MessageResources.properties
        └── webapp
            ├── WEB-INF
            │   ├── struts-config.xml
            │   ├── validation.xml
            │   └── web.xml
            ├── index.jsp
            └── pages
                └── Welcome.jsp

6 directories, 7 files
```

struts-blankの内容と同じものが作成されたようです。
昔は、Strutsのサイトでstruts-blank.zip とかダウンロード出来たようですが、今は対象のstruts-x.x.x-bin.zipを回答して、struts-blank.warを取り出して解凍するしか方法が無いようです。
それに比べれば、ずいぶん楽ですね。

## Eclipseに取り込む

このまま取り込んでも良いのですが、コンパイラの設定が Java 1.5を使うようになっています。
Java 8を使用するように設定の変更を行います。

### Java8 に変更

```xml:pom.xml
    		<plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                   <source>1.8</source>
                   <target>1.8</target>
                </configuration>
            </plugin>

```

84行目、85行目を 1.5から1.8に変更します。

### Eclipseに取り込む

Eclipse -> Import -> Maven -> Exsiting Maven Project
先ほど作成したmy-webappを取り込みます。

![Eclipse.png](https://qiita-image-store.s3.amazonaws.com/0/18582/6e4051a5-523a-744c-12da-0c3c885e1d1d.png "Eclipse.png")

### Tomcat8 で確認

ServerからTomcat8を作成し、デプロイします。

http://localhost:8080/my-webapp/

無事に表示されました。

![tomcat.png](https://qiita-image-store.s3.amazonaws.com/0/18582/8960b521-1ebf-bef3-d7a9-d2e50a4fd70c.png "tomcat.png")

## まとめ

今更、Strutsの環境を作成することもないかもしれませんが、けっこう楽に構築出来ました。
Java8でもStruts1.3.xは問題なく動作しますね。

次回は、JavaEE7とStrutsを組み合わせてみようかと思います。
Struts1.3 + EJB3.1とか面白そうですね。