Velocity空間

          快速構(gòu)建JAVA應(yīng)用
          隨筆 - 11, 文章 - 15, 評論 - 5, 引用 - 0
          數(shù)據(jù)加載中……

          CHAPTER 4 安裝Velocity

          讀完之前的介紹性章節(jié)之后,你已經(jīng)不再擔(dān)憂開始使用Velocity來開發(fā)WEB頁和獨立應(yīng)用程序了。在你開始鉆研語言和應(yīng)用示例之前,你必須完全設(shè)置和配置好開發(fā)環(huán)境。在這一章里,我們將介紹Velocity的首要條件,同時向你說明如何獲取、安裝和測試Velocity。我們也將介紹本書示例(依賴于Servlets的示例)將要用到的應(yīng)用程序服務(wù)器的安裝過程。如果你是一個開發(fā)者,不要擔(dān)心,我們計劃慢慢地對整個安裝過程進行講解,以保證你掌握安裝的每一個細節(jié)。這對一個開發(fā)者來說,是一次很好的實踐。

          先決條件

          Velocity需要你安裝下面的包:

          在執(zhí)行Velocity時,JVMJAVA虛擬機)中必需的。至少,你應(yīng)該安裝JRE包(JAVA運行時環(huán)境)。如果你想編譯Velocity,你還需要JAVA 2 SDK (J2SDK);如果你正在使用Servlets或想運行本書上的示例,你必須安裝J2SDK。你可以在http://sun.java.com上找到這兩個包,在寫這本書時,我們創(chuàng)建和執(zhí)行這些示例采用的是JAVA 1.4.1版本。

          Velocity依賴于Ant build工具集(AntJakarta項目的一部分)。Ant可以從http://jakarta.apache.org/ant上下載,可以使用1.3或更高的版本。一旦Ant安裝好后,需要設(shè)置環(huán)境參數(shù),以便Ant應(yīng)用程序能在任務(wù)路徑下被訪問。

          獲取Velocity

          你可以從http://jakarta.apache.org/velocity處下載當(dāng)前版的Velocity(見Figure 4.1),在release目錄下,這里有許多的版本(見Figure 4.2),對于本書來說,我們使用的是1.3.1版本。

          Figure 4.1 Velocity主下載頁.

          Figure 4.2 可用Velocity版本

           

          Figure 4.3 Velocity v1.3.1 files.

          如果你的工作平臺是Unix/Linux系統(tǒng),應(yīng)該選擇GZ文件,Windows用戶應(yīng)該選擇ZIP文件。兩個情況下,都需要將下載的文件解壓到的文件夾。

          UNIX/Linux平臺,解壓命令是:

          gunzip –xvf velocity-1.3.1.tar.gz

          解壓后,目錄(Velocity1.3.1版本)結(jié)構(gòu)應(yīng)該像Figure 4.4顯示的一樣。


          Figure 4.4
          Velocity目錄結(jié)構(gòu)

          目錄說明如下:

          /build全部Ant build腳本

          /convert—WebMacro轉(zhuǎn)換模板

          /docs—VelocityHTML格式說明文檔

          /examples示例源代碼

          /src—Velocity, Anakia, Texen的資源代碼

          /test測試應(yīng)用和模板

          /xdocs資源文檔,它可以編譯到不同的輸出格式

          當(dāng)你使用任何一種build目標來創(chuàng)建Velocity JAR時,將創(chuàng)建一個/bin文件夾。(下一節(jié)介紹)

          Velocity版本

          Velocity提供了三種不同的打包方式:

          編譯時包含全部依賴

          編譯時不含依賴

          源代碼方式

          With the first and second flavors, the issue of dependencies arises. In the root Velocity directory, you find two JAR files, like the following:

          在第一種和第二種情況下,Velocity已經(jīng)為你打好了包,在解壓后的Velocity根目錄里,你將發(fā)現(xiàn)兩個JAR文件,分別為(對應(yīng)1.3.1版本):

          velocity-1.3.1.jar

          velocity-dep-1.3.1.jar

          很明顯,文件名velocity-dep代表的是所有依賴已經(jīng)編譯進去。

          這些依賴分別為:

          Jakarta Commons Collections Jakarta通用集合)—Velocity需要的解決方案集。

          Jakarta Avalon Logkit如果你的解決方案需要把日志寫入到一個文件,則需要這個JAR

          Jakarta ORO—This is required for the 在使用WebMacro模板轉(zhuǎn)換工具集是,這個包是必須的。如果你不想轉(zhuǎn)換任何WebMacro模板(甚至不知道WebMacro),那么就不需要這個包依賴。Velocity開發(fā)團隊準備各種分離的JARs的目的是為了允許最終開發(fā)者可以選擇使用Jakarta解決方案或第三方組件。所有依賴都放在/build/lib目錄下,如何你想使用其中一個已經(jīng)編譯好的JARs時,你只需要簡單將其拷貝到你的項目的classpath下(WEB應(yīng)用中是WEB-INF/lib)就可以了。

          編譯Velocity

          在第三種情況下(源代碼方式),系統(tǒng)被作為需要編譯的源文件使用(?)。正如我們之前提到的一樣,Velocity是為用Ant工具build而設(shè)計的(Ant是一個允許進行組織、編譯和部署的JAVA應(yīng)用程序)。通過build targetAnt將構(gòu)為Velocity造所有的源代碼。構(gòu)建目標(build target)告訴Ant去執(zhí)行一些特定的任務(wù)。VelocityAnt任務(wù)一般為:

          jar-dep構(gòu)建一個完整的Velocity JAR,包含前面列出來的全部依賴包,命令為:

          ant jar-dep

          其結(jié)果是構(gòu)建一個如下文件:

          C:"velocity-1.3.1"bin"velocity-dep-1.3.1.jar

          jar同樣是構(gòu)建一個完整的Velocity JAR文件,但這個JAR沒有包含依賴包。然而,一旦需要使用Jakarta Commons Collection時,你需要增加這個JAR的路徑到你的classpath。如果你必須要使用WebMacro工具集或需要日志功能,這些JARs也必須加到你的classpath中。如果你已經(jīng)包含了所有的依賴包,你只需要使用jar-def來構(gòu)建文件既可。命令為:

          ant jar

          其結(jié)果是構(gòu)建一個如下文件:

          C:"velocity-1.3.1"bin"velocity-1.3.1.jar

          jar-corejar參數(shù)一樣進行編譯Velocity,但它沒有包含任何示例和Servlets支持,命令為:

          ant jar-core

          其結(jié)果是構(gòu)建一個如下文件:

          C:"velocity-1.3.1"bin"velocity-core-1.3.1.jar

          jar-util僅僅構(gòu)建Velocity utilities, Anakia, Texan, Web-Macro。命令為:

          ant jar-util

          其結(jié)果是構(gòu)建一個如下文件:

          C:"velocity-1.3.1"bin"velocity-util-1.3.1.jar

          jar-servlet該命令將編譯VelocityServlet類,以提供Velocity servlet支持。命令為:

          ant jar-servlet

          其結(jié)果是構(gòu)建一個如下文件:

          C:"velocity-1.3.1"bin"velocity-servlet-1.3.1.jar

          jar-J2EE該將編譯一個完整的Velocity JAR,和jar命令一樣,但這個命令將包含J2EE JAR文件。該命令需要在/build/lib目錄下有j2ee.jar。命令為:

          ant jar-J2EE

          其結(jié)果是構(gòu)建一個如下文件:

          C:"velocity-1.3.1"bin"velocity-J2EEdep-1.3.1.jar

          jar-J2EE-dep該將編譯一個完整的具有J2EE支持的Velocity JAR,同時包含之前列出來的依賴包。命令為:

          ant jar-J2EE-dep

          其結(jié)果是構(gòu)建一個如下文件:

          C:"velocity-1.3.1"bin"velocity-J2EE-1.3.1.jar

          examples該命令將編譯/examples目錄下的所有Velocity示例。命令為:

          ant examples

          其結(jié)果如下:

          C:"velocity-1.3.1"bin"forumdemo.war

          C:"velocity-1.3.1"examples/appexample1

          C:"velocity-1.3.1"examples/appexample2

          C:"velocity-1.3."examples/servletexample1

          C:"velocity-1.3."examples/servletexample2

          C:"velocity-1.3."examples/context_example

          C:"velocity-1.3."examples/logger_example

          C:"velocity-1.3."examples/xmlapp_example

          C:"velocity-1.3."examples/event_example

          forumdemo該命令只構(gòu)建/forumdemo 目錄下的論壇示例。命令為:

          ant forumdemo

          其結(jié)果是構(gòu)建一個如下文件:

          C:"velocity-1.3.1"bin"forumdemo.war

          docs該命令將用Anakia 工具構(gòu)建具有依賴支持的Velocity文檔。Jarkata Site2項目必須事先在電腦上安裝,Site2項目的安裝目錄必須和Velocity的安裝目錄在同一層,關(guān)于Site2項目的信息,你可在http://jakarta.apache.org/site/jakarta-site2.html上找到。另外,你也可以在VC目錄下創(chuàng)建一個名叫/jakarta-site的目錄,然后把examples/anakia/xdocs目錄下的內(nèi)容全部拷貝到/jakarta-site下。命令為:

          ant docs

          其結(jié)果是在/docs目錄構(gòu)建了一個由HTML文件組成的文檔。

          docs_print該命令用于構(gòu)建一個適合打印的Velocity HTML文檔。命令為:

          ant docs_print

          結(jié)果是構(gòu)建了一個適合打印的Velocity HTML文檔。

          jar-src該命令用于把所有的資源代碼放入一個JAR文件中。命令為:

          ant jar-src

          其結(jié)果是構(gòu)建一個如下文件:

          C:"velocity-1.3.1"bin"velocity-1.3.1.src.jar

          javadocs該命令用于構(gòu)建Velocity JavaDoc。命令為:

          ant javadocs

          其結(jié)果是在/examples/api目錄下創(chuàng)建一些由JavaDoc組成的文檔。

          test該命令用于測試JAR文檔是否正確創(chuàng)建。The JAR will be used with a number of smoke tests(未譯出。)命令為:

          ant test

          在本書中的示例中,Velocity JAR使用的是velocity-dep-1.3.1.jar (Velocity解壓目錄下)。該JAR文檔和用Antjar-dep命令創(chuàng)建的文件相同,包含所有的依賴包。

          測試Velocity的安裝是否正確

          After compiling a particular version of Velocity using Ant and the appropriate build target, you should test the compile to be certain it was successful. The developers of Velocity included a test suite in the distribution that you can execute using Ant and the test build target. The Ant task associated with the test suite uses the Velocity JARs found in the /bin directory of the installation when compiling the examples. When you execute the command ant test, the system utilizes JUnit to run through a couple dozen tests.

          在用Ant和適當(dāng)?shù)臉?gòu)建目標編譯好一個特定版本的Velocity包后,你就可以測試所編譯出來的包是否正確。你可以使用Anttest參數(shù)(Velocity開發(fā)團隊在Velocity解壓目錄里提供的)進行測試。配合test suiteAnt任務(wù)使用Velocity /bin目錄下的JARs文件對示例進行編譯。當(dāng)你執(zhí)行ant test命令時,系統(tǒng)將利用JUnit來運行這些測試。

          運行示例

          在創(chuàng)建完Velocity JAR(有或沒有依賴包)、測試這些JAR和構(gòu)建示例之后,就可以執(zhí)行這些示例來查看Velocity的功能。這里總共有8個示例。

          examples/appexample1

          本示例是一個在JAVA應(yīng)用程序里使用Velocity的例子。通過執(zhí)行example.batwindows系統(tǒng))或example.sh (Unix系統(tǒng))來啟動。運行結(jié)果為:

          Velocity is great!

          ArrayList element 1 is great!

          ArrayList element 2 is great!

          ArrayList element 3 is great!

          ArrayList element 4 is great!

          The condition is true!

          examples/appexample2

          本示例是一個使用Velocity輸出文本的例子。通過執(zhí)行example2.batwindows系統(tǒng))或example2.sh (Unix系統(tǒng))來啟動。運行結(jié)果為:

          template : Hello from Velocity in the Jakarta project.

          string : We are using Jakarta Velocity to render this.

          examples/servletexample1

          本示例是一個在Servlet中使用Velocity的例子。運行前,你必須事先在你的電腦上安裝一個Servlet引擎才能執(zhí)行該示例。執(zhí)行步驟如下:

          安裝一個Servlet引擎,比如:Resin (www.caucho.com) Tomcat (http://jakarta.apache.org/tomcat/).

          1.Servlet引擎的/docs (Resin) /webapps (Tomcat)目錄下創(chuàng)建如下目錄結(jié)構(gòu):

           /velocity1/

          /velocity1/WEB-INF

          /velocity1/WEB-INF/classes

          /velocity1/WEB-INF/lib

          2. Resin下增加一個<web-app> 標記,比如 <web-app id=’velocity1’/>

          3. 拷貝之前創(chuàng)建的Velocity JAR文件到/lib目錄

          4. 拷貝SampleServlet.class文件到/classes目錄

          5. 拷貝sample.vm 文件到/velocity1目錄

          6. 為你的服務(wù)器創(chuàng)建一個適當(dāng)?shù)?/span>web.xml文件,比如:

          用于Resin服務(wù)器時:

          <web-app>

          <servlet-mapping>

          <url-pattern id="/servlet/*"/>

          <servlet-name id="invoker"/>

          </servlet-mapping>

          </web-app>

          7. 重啟TomcatResin不用重啟,它會自動測試應(yīng)用變更)

          8. 在瀏覽器里輸入以下URL

          http://localhost:8080/velocity1/servlet/SampleServlet

          Figure 4.5 顯示了執(zhí)行本示例的輸出結(jié)果


          Figure 4.5
          Servlet Example1 output.

          examples/servletexample2

          第二Servlet示例比第一個示例要稍復(fù)雜一點,它使用了一個屬性文件,并展示了如何加載一個外部的模板文件。其步驟和第一個類似。詳細情況你可以查看/examples/servlet_example2目錄下的readme.txt文件。

          examples/context_example

          本示例展示了如何使用上下文。該示例使用了一個存儲在數(shù)據(jù)庫里的串行信息文件。本應(yīng)用假定使用的是MYSQL數(shù)據(jù)庫,并且MYSQL驅(qū)動已經(jīng)加入到classpath中,數(shù)據(jù)庫名叫test,數(shù)據(jù)庫表的定義如下:

          create table contextstore(id int not null auto_increment primary key, k varchar(128), val blob);

          執(zhí)行示例的命令為:

          C:"velocity-1.3.1"examples"context_example>java –cp "./;../../bin/velocity-dep-1.3.1.jar;" DBContextTest dbtest.vm

          輸出結(jié)果如Figure 4.6所示


          Figure 4.6
          Context example output.

          examples/logger_example

          本示例一個Velocity日志使用例子。通過執(zhí)行logger_example.batwindows系統(tǒng))或logger_example.sh (Unix系統(tǒng))來啟動。運行結(jié)果為:


          Figure 4.7
          Logger example output.

          examples/xmlapp_example

          本示例展示了如何從一個Velocity格式文件和模板導(dǎo)入XML數(shù)據(jù)。運行本示例需要在classpath里加入 JDom JARApache’s Xerces包。通過執(zhí)行logger_example.batwindows系統(tǒng))或logger_example.sh (Unix系統(tǒng))來啟動。

          examples/event_example

          本示例展示了如何使用Velocity的事件處理特性。執(zhí)行示例的命令如下:

          java -cp "./;../../bin/velocity-dep-1.3.1.jar;" EventExample

          Figure 4.8 顯示了執(zhí)行結(jié)果:


          Figure 4.8
          Event example output.

          本章小節(jié)和下章介紹

          在這一章里,我們提供了一個Velocity獲取、安裝、分發(fā)的全面概覽。我們也說明了如何測試編譯的操作。另外,我們也仔細查看了Velocity自帶的示例。在下一章里,我們將構(gòu)建我們自己的第一個Velocity應(yīng)用。

          posted on 2008-10-12 15:49 KINGWEE 閱讀(1035) 評論(1)  編輯  收藏 所屬分類: Velocity

          評論

          # re: CHAPTER 4 安裝Velocity  回復(fù)  更多評論   

          作者真的是辛苦了,不過這樣的文章給我們帶來了很多的方便和學(xué)習(xí)的愉悅,謝謝你了,非常感謝
          2010-05-27 14:42 | 何禎元
          主站蜘蛛池模板: 庆阳市| 当雄县| 遂溪县| 吴堡县| 威远县| 揭东县| 郎溪县| 通河县| 碌曲县| 汉沽区| 衢州市| 泌阳县| 化州市| 普定县| 北川| 酉阳| 太保市| 南华县| 迁安市| 峨边| 临夏县| 富民县| 林州市| 榆树市| 河西区| 屯昌县| 商丘市| 广平县| 宁强县| 丰城市| 台东县| 新蔡县| 丰原市| 阳谷县| 海原县| 涿州市| 砀山县| 防城港市| 永靖县| 抚顺县| 延津县|