Ant - Tạo tệp WAR

Tạo tệp WAR với Ant cực kỳ đơn giản và rất giống với tác vụ tạo tệp JAR. Rốt cuộc, tệp WAR, giống như tệp JAR chỉ là một tệp ZIP khác.

Nhiệm vụ WAR là một phần mở rộng của nhiệm vụ JAR, nhưng nó có một số bổ sung thú vị để thao tác những gì đi vào thư mục WEB-INF / class và tạo tệp web.xml. Nhiệm vụ WAR rất hữu ích để chỉ định một bố cục cụ thể của tệp WAR.

Vì nhiệm vụ WAR là một phần mở rộng của nhiệm vụ JAR, tất cả các thuộc tính của nhiệm vụ JAR áp dụng cho nhiệm vụ WAR.

Sr.No. Thuộc tính & Mô tả
1

webxml

Đường dẫn đến tệp web.xml

2

lib

Một nhóm để chỉ định những gì đi vào thư mục WEB-INF \ lib.

3

classes

Một nhóm để chỉ định những gì đi vào thư mục WEB-INF \ lớp.

4

metainf

Chỉ định hướng dẫn để tạo tệp MANIFEST.MF.

Tiếp tục của chúng tôi Hello WorldDự án Ứng dụng Fax, hãy để chúng tôi thêm một mục tiêu mới để tạo các tệp jar. Nhưng trước đó chúng ta hãy xem xét nhiệm vụ chiến tranh. Hãy xem xét ví dụ sau:

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

Theo các ví dụ trước, web.dir biến đề cập đến thư mục web nguồn, tức là thư mục chứa tệp JSP, css, javascript, v.v.

Các build.dirbiến tham chiếu đến thư mục đầu ra - Đây là nơi có thể tìm thấy các lớp cho gói WAR. Thông thường, các lớp sẽ được đóng gói vào thư mục WEB-INF / lớp của tệp WAR.

Trong ví dụ này, chúng tôi đang tạo một tệp chiến tranh có tên fax.war. Tệp WEB.XML được lấy từ thư mục nguồn web. Tất cả các tệp từ thư mục 'WebContent' dưới web được sao chép vào tệp WAR.

Thư mục WEB-INF / lib được điền với các tệp jar từ thư mục thirdpartyjars. Tuy nhiên, chúng tôi loại trừ portlet.jar vì nó đã có trong thư mục lib của máy chủ ứng dụng. Cuối cùng, chúng tôi đang sao chép tất cả các lớp từ thư mục web của thư mục xây dựng và đưa vào thư mục WEB-INF / lớp.

Gói nhiệm vụ chiến tranh bên trong mục tiêu Ant (thường là gói) và chạy nó. Thao tác này sẽ tạo tệp WAR ở vị trí được chỉ định.

Hoàn toàn có thể lồng ghép các lớp, lib, metainf và webinf director để chúng nằm trong các thư mục rải rác ở bất kỳ đâu trong cấu trúc dự án. Nhưng các phương pháp hay nhất gợi ý rằng dự án Web của bạn nên có cấu trúc Nội dung Web tương tự như cấu trúc của tệp WAR. Dự án Ứng dụng Fax có cấu trúc được phác thảo bằng cách sử dụng nguyên tắc cơ bản này.

Để thực hiện nhiệm vụ chiến tranh, hãy bọc nó bên trong một mục tiêu, phổ biến nhất là mục tiêu xây dựng hoặc gói và chạy chúng.

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

Chạy Ant trên tệp này sẽ tạo fax.war nộp cho chúng tôi.

Kết quả sau là kết quả của việc chạy tệp Ant -

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

BUILD SUCCESSFUL
Total time: 12.3 seconds

Tệp fax.war hiện đã được đặt trong thư mục đầu ra. Nội dung của hồ sơ chiến tranh sẽ là -

fax.war:
   +---jsp             This folder contains the jsp files
   +---css             This folder contains the stylesheet files
   +---js              This folder contains the javascript files
   +---images          This folder contains the image files
   +---META-INF        This folder contains the Manifest.Mf
   +---WEB-INF
      +---classes   This folder contains the compiled classes
      +---lib       Third party libraries and the utility jar files
      WEB.xml       Configuration file that defines the WAR package