Velocity空間

          快速構建JAVA應用
          隨筆 - 11, 文章 - 15, 評論 - 5, 引用 - 0
          數據加載中……

          CHAPTER 4 安裝Velocity

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

          先決條件

          Velocity需要你安裝下面的包:

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

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

          獲取Velocity

          你可以從http://jakarta.apache.org/velocity處下載當前版的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系統,應該選擇GZ文件,Windows用戶應該選擇ZIP文件。兩個情況下,都需要將下載的文件解壓到的文件夾。

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

          gunzip –xvf velocity-1.3.1.tar.gz

          解壓后,目錄(Velocity1.3.1版本)結構應該像Figure 4.4顯示的一樣。


          Figure 4.4
          Velocity目錄結構

          目錄說明如下:

          /build全部Ant build腳本

          /convert—WebMacro轉換模板

          /docs—VelocityHTML格式說明文檔

          /examples示例源代碼

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

          /test測試應用和模板

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

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

          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已經為你打好了包,在解壓后的Velocity根目錄里,你將發現兩個JAR文件,分別為(對應1.3.1版本):

          velocity-1.3.1.jar

          velocity-dep-1.3.1.jar

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

          這些依賴分別為:

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

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

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

          編譯Velocity

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

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

          ant jar-dep

          其結果是構建一個如下文件:

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

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

          ant jar

          其結果是構建一個如下文件:

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

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

          ant jar-core

          其結果是構建一個如下文件:

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

          jar-util僅僅構建Velocity utilities, Anakia, Texan, Web-Macro。命令為:

          ant jar-util

          其結果是構建一個如下文件:

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

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

          ant jar-servlet

          其結果是構建一個如下文件:

          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

          其結果是構建一個如下文件:

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

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

          ant jar-J2EE-dep

          其結果是構建一個如下文件:

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

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

          ant examples

          其結果如下:

          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該命令只構建/forumdemo 目錄下的論壇示例。命令為:

          ant forumdemo

          其結果是構建一個如下文件:

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

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

          ant docs

          其結果是在/docs目錄構建了一個由HTML文件組成的文檔。

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

          ant docs_print

          結果是構建了一個適合打印的Velocity HTML文檔。

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

          ant jar-src

          其結果是構建一個如下文件:

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

          javadocs該命令用于構建Velocity JavaDoc。命令為:

          ant javadocs

          其結果是在/examples/api目錄下創建一些由JavaDoc組成的文檔。

          test該命令用于測試JAR文檔是否正確創建。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命令創建的文件相同,包含所有的依賴包。

          測試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和適當的構建目標編譯好一個特定版本的Velocity包后,你就可以測試所編譯出來的包是否正確。你可以使用Anttest參數(Velocity開發團隊在Velocity解壓目錄里提供的)進行測試。配合test suiteAnt任務使用Velocity /bin目錄下的JARs文件對示例進行編譯。當你執行ant test命令時,系統將利用JUnit來運行這些測試。

          運行示例

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

          examples/appexample1

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

          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輸出文本的例子。通過執行example2.batwindows系統)或example2.sh (Unix系統)來啟動。運行結果為:

          template : Hello from Velocity in the Jakarta project.

          string : We are using Jakarta Velocity to render this.

          examples/servletexample1

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

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

          1.Servlet引擎的/docs (Resin) /webapps (Tomcat)目錄下創建如下目錄結構:

           /velocity1/

          /velocity1/WEB-INF

          /velocity1/WEB-INF/classes

          /velocity1/WEB-INF/lib

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

          3. 拷貝之前創建的Velocity JAR文件到/lib目錄

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

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

          6. 為你的服務器創建一個適當的web.xml文件,比如:

          用于Resin服務器時:

          <web-app>

          <servlet-mapping>

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

          <servlet-name id="invoker"/>

          </servlet-mapping>

          </web-app>

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

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

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

          Figure 4.5 顯示了執行本示例的輸出結果


          Figure 4.5
          Servlet Example1 output.

          examples/servletexample2

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

          examples/context_example

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

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

          執行示例的命令為:

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

          輸出結果如Figure 4.6所示


          Figure 4.6
          Context example output.

          examples/logger_example

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


          Figure 4.7
          Logger example output.

          examples/xmlapp_example

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

          examples/event_example

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

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

          Figure 4.8 顯示了執行結果:


          Figure 4.8
          Event example output.

          本章小節和下章介紹

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

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

          評論

          # re: CHAPTER 4 安裝Velocity  回復  更多評論   

          作者真的是辛苦了,不過這樣的文章給我們帶來了很多的方便和學習的愉悅,謝謝你了,非常感謝
          2010-05-27 14:42 | 何禎元
          主站蜘蛛池模板: 江北区| 含山县| 南华县| 芒康县| 长沙县| 博野县| 清新县| 时尚| 砀山县| 黄浦区| 京山县| 比如县| 青河县| 马鞍山市| 五指山市| 西吉县| 永胜县| 林周县| 乐业县| 莱阳市| 靖宇县| 霍林郭勒市| 黎川县| 涿鹿县| 壤塘县| 射阳县| 灵武市| 郎溪县| 勐海县| 铜陵市| 织金县| 泊头市| 广丰县| 遵义县| 林西县| 滕州市| 桂东县| 改则县| 皮山县| 河北区| 绥化市|