sa-strutsとしてプロジェクトを作成編

sa-strutsのプロジェクトを作る事のおさらいも含めてやってみる。


Doltengでプロジェクトを作成。
って、Dolteng入ってないやw
3.5にしたと気にいれてなかった。


http://eclipse.seasar.org/updates/3.3/


ここを新規ソフトウェアのインストールについかして、
Doltengをインストール。
2010/11/23時点の多分最新をインスコ

  • Root Package Name:自分のつけたいパッケージ体制
  • Application Type:Web Application
  • Presentation:SAStruts
  • Persistence:S2JDBC
  • Server Management:Sysdeo Tomcat Plugin


これでプロジェクトを作成。

pom.xmlができあがるので、自動で入るdependencyを全部見てみよう。

  • cglib、easymock、easymockclassextension

 まったくわからねぇwのでいったん削除

 S2JDBC-GENでant走らせるときに必要なのでそのまま
 scopeがtestなのは気になるけど。
 前はmavenサイトに無かった気がするけど、なので自分でコピーしていたなぁ。

 詳しく分かってないけど、tomcatのモックなので必要らしい。
 ただ、warを作成するときには必要ないので、scopeはprovidedに(デフォでされているけど)

 まぁJUnitテストをするだろうから入れておくのがいいだろう

 エンティティ作るから入れておく

  • svnkit、antlr、aopalliance、commons-beanutils

 まったくわからねぇwのでいったん削除 

  • commons-collections

 CollectionUtils.isEmptyとCollectionUtils.isNotEmptyを使用したいので、3.2.1に。いまローカルリポジトリにあったやつがそうだったので。

  • commons-digester、commons-el、commons-fileupload

 まったくわからねぇwのでいったん削除 

  • commons-io

 IOUtilsを使うので、そのまま

  • commons-logging

 いるのかな、ログとかはlog4jを使用するから、いったん削除

  • commons-validator

 まったくわからねぇwのでいったん削除 

 うーん、geronimoはまぁそのままでいいやw

  • h2はいらないので削除

 人それぞれあわせればいい
 うちはPostgreSQL

  • oro

 他のはまぁアドリブで判断できたけど、これにいたっては何も判断できないw まぁ削除

  • standard

 これはtaglib用なのでそのまま

 これはなんだったかなぁ、忘れてしまったが、いったん削除

 まったくわからねぇwのでいったん削除

 そのまま使用

  • ognl

 diconで使用するのでそのまま

  • poi

 ExcelとかPDFとかのAPIだったような気がする、今回は使わないので削除

  • s2-extension、s2-framework、s2-tiger

 まぁこの辺はね

 バージョンがまぁまぁ変わるので注意

 まぁsa-strutsのベースだしそのまま


PostgreSQLを使用するので、

 追加(独自のmavenサイトにおいておく)


これでいったんmavenを起動。

mvn -e package 

mvnのログでなんかjarが書き換わったとかjarをコピーしたというログが出ない。
当たり前だった、何も指定していないしなw(自作自演かw)

mvn -e package dependency:copy-dependencies eclipse:eclipse

と同時に、下記を追加

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-dependency-plugin</artifactId>
	<version>2.0</version>
	<executions>
		<execution>
			<goals>
				<goal>copy-dependencies</goal>
			</goals>
			<configuration>
				<outputDirectory>src/main/webapp/WEB-INF/lib</outputDirectory>
				<excludeScope>provided</excludeScope>
				<overWriteIfNewer>true</overWriteIfNewer>
				<overWriteReleases>true</overWriteReleases>
				<overWriteSnapshots>true</overWriteSnapshots>
			</configuration>
		</execution>
	</executions>
</plugin>

と同時に、projectのnatureのdefaultにtomcatを指定するので、

<plugin>
	<artifactId>maven-eclipse-plugin</artifactId>
	<configuration>
		<additionalProjectnatures>
			<projectnature>com.sysdeo.eclipse.tomcat.tomcatnature</projectnature>
		</additionalProjectnatures>
	</configuration>
</plugin>

projectnatureの値は、.projectのnatureの値


うーん、eclipseの設定が反映されているのか分からないな。
いったん、
eclipse:clean と eclipse:eclipse の両方を指定してみよう。


昔、eclipse:cleanしてmvnを流すと、tomcatプロジェクトが外れちゃったのだけれども、
natureの設定をしているからか、消えないな。
たぶんこれでいいのだろう…。


ただ、これだとWEB-INF/libが最新化されない。


何かいいpluginがあるのだろうが、
以前からmavenから呼ぶantでごりごりやっていたので、
今回もそれで。

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-antrun-plugin</artifactId>
	<version>1.1</version>
	<executions>
		<execution>
			<id>delete-WEB-INF-and-target-lib</id>
			<phase>clean</phase>
			<configuration>
				<tasks>
					<echo message="./src/main/webapp/WEB-INF/libを削除します"/>
					<delete dir="./src/main//webapp/WEB-INF/lib" />
					<echo message="./target/libを削除します"/>
					<delete dir="./target/lib" />
				</tasks>
			</configuration>
			<goals>
				<goal>run</goal>
			</goals>
		</execution>
	</executions>
</plugin>

これを追加して、mvnを流す。
antrun:runをcleanのフェーズでながすので、cleanとpackageを指定。

mvn -e clean package eclipse:clean eclipse:eclipse antrun:run dependency:copy-dependencies 

今回はなんとなく、pluginを指定を順番ぽくした


うん、WEB-INF/libにちゃんとコピーされたっぽい。
ごみファイルをおいておいたが、それもなくなってるし。

tomcatを起動してみよう。
tomcatのコンテキスト更新を忘れないようにw


dicon周辺が全然だめだったwwww

  • app.dicon

 そのまま

  • convention.dicon

 Doltengで生成しているので、rootpackgeは正しいものを指定してされている

 Dto、Interceptor、Daoは必要ないので、削除
 以前はFormCreatorは無かったけど、今はデフォで指定されているのねぇ。

 PostgreSQLを使用するので、H2はコメントアウトして、PostgreSQL用のDataSourceに
 ただ、疑問があるのだが、下のほうでdataSourceを指定しているけど、nameがDataSourceになっているけど、nameってインスタンスの名前だから、dataSourceじゃないのかな?

  • s2ontainer.dicon

 そのまま

 dialectをPostgreSQL用に修正


tomcatを起動
起動した!
Doltengが生成したActionとJSPが表示された!


余談:
JSPがWEB-INF/viewの下におかれている。

<context-param>
    <param-name>sastruts.VIEW_PREFIX</param-name>
    <param-value>/WEB-INF/view</param-value>
</context-param>

context-paramをコメントアウトして起動すると、
index.jspが無いと怒られるので、それなんだろう。
それに合うようにファイルを移動させると、

400 - Direct access for JSP is not permitted. Remove "index.jsp" from welcome-file-list of (default) "web.xml".

これになる。
rootpakageのIndexActionのJSPをindex.jspにするのはかなりやりがち。
でも、そうするとwebappの直下にindex.jspをおかなきゃいけないので、
そうするとweb.xmlのwelcome-file-listにindex.jspを追加せにゃいけなく、
それがイヤだから、指定しているのだろう。


まぁ自動でこう生成されたので、これでいいかな。


ちなみにSAStrutsプラグインはこの辺も見ているので、
viewはweb.xmlにさえ書いてあれば大丈夫っぽい。


2010/11/25 14:47追記
上のmvnコマンドだとソースがくっついてこないので、

mvn -e clean package eclipse:clean eclipse:eclipse antrun:run dependency:copy-dependencies -DdownloadSources=true

がいいかな。