Ant 生成 WAR 文件

2022-07-19 15:12 更新

使用 Ant 創(chuàng)建 WAR 文件是極其簡單的。這與創(chuàng)建 JAR 文件任務(wù)非常類似。 畢竟,WAR 文件與 JAR 文件只是兩種不同的 ZIP 文件。

WAR 任務(wù)是 JAR 任務(wù)的一個擴(kuò)展,但是其對控制哪些文件進(jìn)入 WEB-INF/classes 文件夾和生成 web.xml 文件進(jìn)行了一些很好的補充。WAR 任務(wù)對指定 WAR 文件布局是非常有用的。

既然 WAR 任務(wù)是 JAR 任務(wù)的一個擴(kuò)展,JAR 任務(wù)的所有的屬性都適用于 WAR 任務(wù)。

屬性 描述
webxml web.xml 文件的路徑
lib 指定什么文件可以進(jìn)入 WEB-INF\lib 文件夾的一個組
classes 指定什么文件可以進(jìn)入 WEB-INF\classes 文件夾的一個組
metainf 指定生成 MANIFEST.MF 文件的指令

繼續(xù)我們的 Hello World 傳真應(yīng)用項目,讓我們添加一個新的目標(biāo)來生成 jar 文件。 但是在此之前,我們需要考慮一下 war 任務(wù)。 請看下面的例子:

<war destfile = "fax.war" webxml = "${web.dir}/web.xml">

   <fileset dir = "${web.dir}/WebContent">
      <include name = "**/*.*"/>
   </fileset>

   <lib dir = "thirdpartyjars">
      <exclude name = "portlet.jar"/>
   </lib>

   <classes dir = "${build.dir}/web"/>

</war>

按照前面的例子中,web.dir 變量指向源 web 文件夾,即該文件包含 JSP,css 和 javascript 文件等等。

該 build.dir 變量指向輸出文件夾,WAR 的包能在該文件夾下找到。 通常情況下, 類將被綁定到 WAR 文件下的 WEB-INF/classes 文件夾下。

在這個例子中,我們創(chuàng)建了一個名為 fax.war 的 war 文件。WEB.XML 文件可以從 web 源文件中獲取。 所有 web 下來自 “WebContent” 的文件都被復(fù)制到 WAR 文件中。

WEB-INF/lib 文件夾中存儲了來自于第三方 jar 文件夾中的 jar 文件。但是,我們排除了 portlet.jar,因為該 jar 文件已經(jīng)存在于應(yīng)用服務(wù)器的 lib 文件夾中了。最后,我們從一個構(gòu)建目錄下的 web 文件夾中復(fù)制所有的類,并將復(fù)制的類全部放入 WEB-INF/classes 文件夾下。

將一個 war 任務(wù)封裝到一個 Ant 任務(wù)中并運行它。 這將在指定位置創(chuàng)建一個 WAR 文件。

類,庫,metainf 和 webinf 目錄完全可以進(jìn)行嵌套以使得他們都能存在于項目結(jié)構(gòu)下分散的文件夾中。 但是最佳的實踐建議是,你的 web 項目的 web 內(nèi)容架構(gòu)應(yīng)該與 WAR 文件類似。 傳真應(yīng)用項目的架構(gòu)就是使用了這個基本原理。

要執(zhí)行 war 任務(wù),將其封裝在一個目標(biāo)里面,最常見的是,構(gòu)建目標(biāo)或者是包目標(biāo),然后運行它們。

<target name="build-war">

   <war destfile="fax.war" webxml="${web.dir}/web.xml">
      <fileset dir="${web.dir}/WebContent">
         <include name="**/*.*"/>
      </fileset>

      <lib dir="thirdpartyjars">
         <exclude name="portlet.jar"/>
      </lib>

      <classes dir="${build.dir}/web"/>
   </war>

</target>

在這個文件上運行 Ant 會替我們創(chuàng)建 fax.war 文件。

下述的輸出就是運行 Ant 文件的結(jié)果:

>C:\>ant build-war
>Buildfile: C:\build.xml

>BUILD SUCCESSFUL
>Total time: 12.3 seconds

該 fax.war 文件當(dāng)前被放置在輸出文件夾中。war 文件的內(nèi)容如下所示:

>fax.war:
   >+---jsp :這個文件夾包含了 jsp 文件
   >+---css :這個文件夾包含了 stylesheet 文件
   >+---js :這個文件夾包含了  javascript 文件
   >+---images:這個文件夾包含了  image 文件
   >+---META-INF:這個文件夾包含了  Manifest.Mf
   >+---WEB-INF
           >+---classes :這個文件夾包含了編譯好的類
          >+---lib :第三方庫和使用程序 jar 文件
          >WEB.xml :定義 WAR 包的配置文件 
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號