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-annotation_1.0_spec、geronimo-ejb_3.0_spec、geronimo-interceptor_3.0_spec、geronimo-jpa_3.0_spec、geronimo-jta_1.1_spec
うーん、geronimoはまぁそのままでいいやw
- h2はいらないので削除
人それぞれあわせればいい
うちはPostgreSQL
- oro
他のはまぁアドリブで判断できたけど、これにいたっては何も判断できないw まぁ削除
- standard
これはtaglib用なのでそのまま
これはなんだったかなぁ、忘れてしまったが、いったん削除
まったくわからねぇwのでいったん削除
そのまま使用
- ognl
diconで使用するのでそのまま
- poi
ExcelとかPDFとかのAPIだったような気がする、今回は使わないので削除
- s2-extension、s2-framework、s2-tiger
まぁこの辺はね
- sa-struts
バージョンがまぁまぁ変わるので注意
まぁ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は正しいものを指定してされている
- creator.dicon
Dto、Interceptor、Daoは必要ないので、削除
以前はFormCreatorは無かったけど、今はデフォで指定されているのねぇ。
- jdbc.dicon
PostgreSQLを使用するので、H2はコメントアウトして、PostgreSQL用のDataSourceに
ただ、疑問があるのだが、下のほうでdataSourceを指定しているけど、nameがDataSourceになっているけど、nameってインスタンスの名前だから、dataSourceじゃないのかな?
- s2ontainer.dicon
そのまま
- s2jdbc.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
がいいかな。