City of Dream

          實(shí)踐出真知

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            2 隨筆 :: 1 文章 :: 35 評論 :: 0 Trackbacks
          Appfuse是一個融合當(dāng)前各種框架的web應(yīng)用最佳實(shí)踐。從名字可以看出:App=框架應(yīng)用,fuse=熔合。

          Appfuse涉及的東西較多,也大都有實(shí)用價值。這系列文會一一道來,一是分享,二是為了自己記憶得更加深刻。我覺得,任何東西說開了都很簡單。所以會盡量用簡單直白,使自己能看懂的敘述方式說出來。

          如有錯誤,希望大家本著共享的精神指出。謝謝!(轉(zhuǎn)載請保留:shenleimail@vip.qq.com

          安裝部署篇:

          Appfuse的最新版本是2.0.1,基于maven管理并發(fā)布的。因此,在安裝Appfuse之前,我們需要了解maven的一些基礎(chǔ)知識。

          maven的核心是對POM(Project Object Model)項(xiàng)目對象模型的管理。就我的理解來看,項(xiàng)目對象模型應(yīng)該包括了依賴項(xiàng)(所需外部jar包)、source、resource等項(xiàng)目相關(guān)的對象,maven用一個生命周期的概念對它們進(jìn)行管理。所以在maven的命令里面包含了發(fā)布、生成、清理、運(yùn)行、刪除等命令。而依賴項(xiàng)并不是一個項(xiàng)目所獨(dú)有的,可能有多個項(xiàng)目用到同一個jar包。因此在maven的概念中依賴項(xiàng)又和POM互相獨(dú)立。如圖:


          此主題相關(guān)圖片如下:


          理解了maven的生命周期管理,再去看它的命令和操作,都是和相應(yīng)的生命期對應(yīng)的。其中有一些通過插件方式實(shí)現(xiàn),比如用jetty運(yùn)行Appfuse,命令為:mvn jetty:run-war

          下面只介紹和Appfuse安裝相關(guān)的maven操作:

          1、下載并解壓maven最新版,不得低于2.0.6(假設(shè)路徑為:E:\soft\maven);

          2、設(shè)置環(huán)境變量:M2_HOME=E:\soft\maven,將%M2_HOME%/bin加入PATH中;

          3、dos模式下輸入mvn -version,能看到正確的版本信息為止(可能需要重啟);

          安裝好maven之后,需要建立本地依賴項(xiàng)庫。到[url=https://appfuse.dev.java.net/servlets/ProjectDocumentList?folderID=8417&expandFolder=8417&folderID=0]https://appfuse.dev.java.net/servlets/ProjectDocumentList?folderID=8417&expandFolder=8417&folderID=0[/url]下載[url=https://appfuse.dev.java.net/files/documents/1397/77087/appfuse-dependencies-2.0.1-with-source-and-javadoc.zip]Dependencies (with source and javadoc)[/url] 142.83M,解壓到某個地方。

          到E:\soft\maven\conf中打開setting.xml文件,在<settings>節(jié)點(diǎn)下加入<localRepository>你解壓的路徑</localRepository>。

          到此為止,準(zhǔn)備工作已完成。

          新建一個目錄,準(zhǔn)備安放Appfuse項(xiàng)目工程。例如為:D:\Project\appfuse2.0.1

          在dos模式下進(jìn)入此目錄,確保在線的情況下運(yùn)行如下命令(這里以Spring MVC Basic為例,如要其他類型,請參考Appfuse官方文檔):

          mvn archetype:create -DarchetypeGroupId=org.appfuse.archetypes -DarchetypeArtifactId=appfuse-basic-spring -DremoteRepositories=http://static.appfuse.org/releases -DarchetypeVersion=2.0.1 -DgroupId=com.webstudio.app -DartifactId=appfuse-spring

          com.webstudio.app及appfuse-spring這兩個變量是可以修改的。com.webstudio.app表示項(xiàng)目根路徑,appfuse-spring表示項(xiàng)目名稱及新建的文件夾名稱。

          運(yùn)行過程中,會看到一系列的waring警告,不用管。等看到:Builde Success,表示成功了。maven會在D:\Project\appfuse2.0.1下新建appfuse-spring目錄,里面含有最重要的pom.xml文件。

          修改pom.xml,在最下面有數(shù)據(jù)庫的配置。若你是mysql數(shù)據(jù)庫,則很簡單,只需修改用戶名和密碼(默認(rèn)為root和空)。若是其他數(shù)據(jù)庫,請參照pom.xml里面的數(shù)據(jù)庫配置文件進(jìn)行替換修改。

          修改好之后,在dos模式下進(jìn)入D:\Project\appfuse2.0.1\appfuse-spring,運(yùn)行mvn appfuse:full-source。這也是個很快的過程。

          之后,在相同的路徑下執(zhí)行:mvn jetty:run-war。jetty是一個jsp容器(類似Tomacat),以jar包的形式跟隨項(xiàng)目發(fā)布,方便部署。此命令會打包生成appfuse-spring-1.0-SNAPSHOT.war并測試發(fā)布,在測試時會有一些異常信息。不用理會,只是一些測試數(shù)據(jù)沒有準(zhǔn)備好。

          等到一切就緒(出現(xiàn)[INFO] Starting scanner at interval of 3 seconds.),打開你的瀏覽器,輸入http://locathost:8080。如果看到Appfuse的登錄頁面,那么恭喜你,你已經(jīng)順利的安裝了Appfuse。maven是個不錯的工具,但我們不能用maven來做所有事。軟件需要部署到IDE上才有更好的開發(fā)效率,maven可以充當(dāng)IDE的一個輔助工具。目前來看,我更傾向用maven管理依賴項(xiàng),用IDE管理軟件生命周期。

          eclipse和netbeans都是不錯的IDE,但遺憾的是,他們的maven插件機(jī)制還有所欠缺。從表面來看,netbeans要比eclipse做得更好,因?yàn)樗梢灾苯咏aven項(xiàng)目,也可以在命令中使用maven插件機(jī)制build項(xiàng)目(“run”始終有點(diǎn)問題)。但從實(shí)際來說,我更傾向eclipse的方式,只讓maven管理依賴項(xiàng),生命周期還是交給IDE更加方便。

          appfuse官網(wǎng)上關(guān)于如何使用IDE部署和調(diào)試項(xiàng)目語焉不詳,只是建議以mvn jetty:run-war的方式發(fā)布。這是脫離項(xiàng)目實(shí)際的,很多人都習(xí)慣了在IDE中編輯和調(diào)試項(xiàng)目。文檔中關(guān)于appfuse在eclipse的部署實(shí)踐不甚令人滿意,我們需要重新動手解決這一切。

          我的環(huán)境是:eclipse+myeclipse+tomcat6

          首先,用maven的方式。在項(xiàng)目路徑下運(yùn)行:mvn eclipse:eclipse建立適合eclipse環(huán)境的工程。

          在eclipse中導(dǎo)入項(xiàng)目,運(yùn)行一次mvn jetty:run-war并確保項(xiàng)目已正常運(yùn)行,這樣會在target目錄下生成部署需要的文件夾和war包。

          選擇項(xiàng)目屬性,在“java build path”——“source”中去掉“src/main/webapp”文件夾。

          在文件夾中打開項(xiàng)目路徑下的appfuse-spring-1.0-SNAPSHOT目錄,將WEB-INF/classes下的所有資源文件拷貝并覆蓋到src/main/resources下,并將WEB-INF/lib復(fù)制到src/main/webapp/WEB-INF/lib中。

          用myeclipse的“add myeclipse web capabilities”命令建立web模塊。路徑指引到src/main/webapp中。在項(xiàng)目下新建目錄webapp,采用link folder的方式鏈接到src/main/webapp。這樣可以讓webapp在最上層,方便編輯。

          用myeclipse將webapp發(fā)布到tomcat中,還需要注意一個問題,不能把所有依賴jar包都發(fā)布,否則會引起包沖突。在這里選擇項(xiàng)目屬性——Myeclise——Web——Deployment——Libirary Deployment Policies中去掉所有勾。

          現(xiàn)在eclipse中運(yùn)行tomcat,不出意外就順利部署成功了。這種方式保留了采用maven發(fā)布和在eclipse中發(fā)布兩種方式,在激活eclipse的maven插件后,也能用maven來管理依賴項(xiàng)。

          對于netbaens,個人建議采用普通的web應(yīng)用方式部署,將剛才在eclipse中部署好的文件一一對應(yīng)拷貝過去即可。不建議用netbeans的maven插件進(jìn)行部署,因?yàn)槟菍?shí)在不大好用。

          安裝部署篇就到這里,下一篇正式進(jìn)入Appfuse的世界。

          ........to be continue
          posted on 2008-02-29 12:53 蕭少英 閱讀(4252) 評論(6)  編輯  收藏

          評論

          # re: [原創(chuàng)]Appfuse使用經(jīng)驗(yàn)雜談——安裝部署篇 2008-02-29 13:18 魔域私服
          學(xué)習(xí)了````````  回復(fù)  更多評論
            

          # re: [原創(chuàng)]Appfuse使用經(jīng)驗(yàn)雜談——安裝部署篇 2008-02-29 14:14 春眠不覺曉,日升不得了
          繼續(xù)關(guān)注.....  回復(fù)  更多評論
            

          # re: [原創(chuàng)]Appfuse使用經(jīng)驗(yàn)雜談——安裝部署篇 2008-02-29 16:32 逝者如昔
          期待著  回復(fù)  更多評論
            

          # re: [原創(chuàng)]Appfuse使用經(jīng)驗(yàn)雜談——安裝部署篇 2008-03-02 14:47 xifu
          坐下來等。。。  回復(fù)  更多評論
            

          # re: [原創(chuàng)]Appfuse使用經(jīng)驗(yàn)雜談——安裝部署篇 2008-03-03 08:51 HuangYy
          我弄BASIC-JSF ,好像弄不起來,不知道各位如何?
          請求幫助,郵箱5huangyy@gmail.com  回復(fù)  更多評論
            

          # re: [原創(chuàng)]Appfuse使用經(jīng)驗(yàn)雜談——安裝部署篇 2008-05-07 13:44 migrant423
          照樓主的辦法根本就運(yùn)行不起來。  回復(fù)  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 钟山县| 玉门市| 永仁县| 南木林县| 石楼县| 兴城市| 万盛区| 高淳县| 泰和县| 渑池县| 汝城县| 甘肃省| 和政县| 堆龙德庆县| 怀化市| 柳江县| 年辖:市辖区| 石泉县| 会宁县| 尼木县| 宜阳县| 明水县| 时尚| 江川县| 黑龙江省| 东乡| 巴东县| 黄骅市| 湖南省| 达尔| 新乡县| 板桥市| 青岛市| 手游| 龙游县| 和平县| 衡东县| 虞城县| 桂阳县| 芜湖县| 通化市|