AppFuse對於想要用好SSH (Struts2, Spring, Hibernate)的朋友來說,是不可多得的寶貴範例。
我最近正在研究SSH,並且想用學到的SSH技術,開發一個論壇項目。
我發現,學好SSH和用好SSH真是兩件完全不同的事情。“學好”是針對基本概念,而“用好”是針對最佳實踐。
我在SSH的基本概念學了一陣後,到要動手寫代碼了,卻發現無從下手。因爲SSH是3個既相對獨立,又相互關聯的框架。要想把SSH這3個框架整合到1個項目中,並且要用一些最佳實踐整合好,並不是一件容易的事情。
AppFuse正好做了整合SSH的事情,從2007年7月11日推出AppFuse 2.0 RC1,到現在的2.1.0.M2,不僅整合好了SSH,還整合了Maven, Spring Annotations, JSF, Spring MVC, Stripe, Tapestry 5, Wicket, JDK5, Annotations, JSP 2.0, Servlet 2.4, JPA.
把最新版的AppFuse 2.1.0.M2範例下載下來,編譯打包運行,這期間遇到了不少問題,不過還好,基本上都被我給解決了。現在快要把AppFuse的Tutorial閱讀並且運行完了。
這篇博文主要是把AppFuse 2.1.0.M2的安裝運行步驟總結一下,以後會繼續把AppFuse的使用經驗和大家分享。
1. 運行環境
安裝好以下環境(我用的是Windows 7 Home):
Java SE 1.6.0_23
MySQL Server 5.1
Maven 3.0.3 和 2.2.1 (一般情況下用Maven 3.0.3, 有些情況下AppFuse的操作Maven 3.0.3會報錯,那時就用2.2.1)
Tomcat 7.0.2
2. AppFuse Quickstart
打開AppFuse Quickstart頁面備查:http://appfuse.org/display/APF/AppFuse+QuickStart
3. 生成basic範例
在一個空文件夾下,從命令行提示窗口,運行Quickstart中下面的範例生成命令
mvn archetype:generate -B -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-struts-archetype -DarchetypeVersion=2.1.0-M2 -DgroupId=com.mycompany -DartifactId=myproject
上述命令在Maven 3.0.3下運行成功後,會在當前文件夾下,生成一個myproject目錄。進入目錄,會看到範例源代碼。
4. 修改double webapp folders問題
AppFuse有一個bug,就是在上述範例源代碼的src/main/java和src/test/java目錄下,會有兩個連續的webapp文件夾。自己手工把model和最後一個webapp文件夾都上移一個文件夾的位置,並且刪除多餘的webapp就好了。
5. MySQL的root的password
在pom.xml文件結尾處,找到MySQL的root的password的元素,寫上你的root的口令。pom.xml默認root的口令是空。
6. 編譯打包
在myproject目錄下,在命令行提示窗口,運行下面的命令打WAR包:
mvn package
7. 運行
把myproject/target目錄下的WAR包,部署到你的Tomcat服務器上,並且讓MySQL處於運行狀態,啓動Tomcat,在瀏覽器中輸入http://localhost:8080/<WAR 包文件名>,就能看到login界面,用戶名和口令都是admin,登錄進入AppFuse範例系統。
8. 生成Eclipse項目文件
運行下面的命令,生成Eclipse項目文件,便於import到你的Eclipse中讀代碼。
mvn org.apache.maven.plugins:maven-eclipse-plugin:2.6:eclipse -DdownloadSources=true -DdownloadJavadocs=true
如果你用MyEclipse, 可以把上述命令中的eclipse換成myeclipse。
這樣就把AppFuse的basic範例安裝配置運行起來了,不過目前你下載的是embedded模式的AppFuse,即僅有AppFuse的用戶端源代碼,還沒有AppFuse的核心模塊源碼。
如果你想看AppFuse的包括用戶端和核心模塊的所有代碼,可以在另一個空的文件夾中,執行上述第3到7步,然後再執行下面的操作就可以了:
9. 修改pom.xml
打開pom.xml, 在appfuse-maven-plugin元素的configuration子元素中,插入下面一行,否則你會看到“svn: PROPFIND request failed”之類的錯誤。
<trunk>https://svn.java.net/svn/appfuse~svn/</trunk>
10. 切換Maven到2.2.1
通過環境變量設置,把M2_HOME改爲Maven 2.2.1的目錄,這樣就把Maven從3.0.3換成了2.2.1。然後重新打開一個命令提示窗口,在有pom.xml的目錄下,執行下面的命令。若你還用Maven3.0.3,你會看到“Embedder”相關的錯誤提示。
mvn appfuse:full-source
接下來,你就可以用Eclipse看AppFuse的代碼,用Maven打包運行,再對照着讀AppFuse 的Tutorials (http://appfuse.org/display/APF/Tutorials )了。