Ant 生成 WAR 文件

2022-07-19 15:12 更新

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

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

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

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

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

<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 文件夾下。

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

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

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

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

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

<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>

在這個(gè)文件上運(yùn)行 Ant 會(huì)替我們創(chuàng)建 fax.war 文件。

下述的輸出就是運(yùn)行 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 :這個(gè)文件夾包含了 jsp 文件
   >+---css :這個(gè)文件夾包含了 stylesheet 文件
   >+---js :這個(gè)文件夾包含了  javascript 文件
   >+---images:這個(gè)文件夾包含了  image 文件
   >+---META-INF:這個(gè)文件夾包含了  Manifest.Mf
   >+---WEB-INF
           >+---classes :這個(gè)文件夾包含了編譯好的類
          >+---lib :第三方庫和使用程序 jar 文件
          >WEB.xml :定義 WAR 包的配置文件 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)