Ant - WAR dosyaları oluşturma

Ant ile WAR dosyaları oluşturmak son derece basittir ve JAR dosyaları oluşturma görevine çok benzer. Sonuçta, WAR dosyası, JAR dosyası gibi sadece başka bir ZIP dosyasıdır.

WAR görevi, JAR görevinin bir uzantısıdır, ancak WEB-INF / sınıflar klasörüne girilenleri değiştirmek ve web.xml dosyasını oluşturmak için bazı güzel eklemeler içerir. WAR görevi, WAR dosyasının belirli bir düzenini belirtmek için kullanışlıdır.

WAR görevi, JAR görevinin bir uzantısı olduğundan, JAR görevinin tüm öznitelikleri WAR görevi için geçerlidir.

Sr.No. Öznitelikler ve Açıklama
1

webxml

Web.xml dosyasının yolu

2

lib

WEB-INF \ lib klasörüne neyin gireceğini belirten bir gruplama.

3

classes

WEB-INF \ sınıfları klasörüne neyin gireceğini belirten bir gruplama.

4

metainf

MANIFEST.MF dosyasını oluşturma talimatlarını belirtir.

Devam ediyor Hello WorldFaks Uygulama projesi, jar dosyalarını üretmek için yeni bir hedef ekleyelim. Ama ondan önce savaş görevini ele alalım. Aşağıdaki örneği düşünün -

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

Önceki örneklere göre, web.dir değişken, kaynak web klasörünü, yani JSP, css, javascript dosyalarını vb. içeren klasörü ifade eder.

build.dirdeğişken çıktı klasörünü ifade eder - Burası, WAR paketi için sınıfların bulunabileceği yerdir. Tipik olarak, sınıflar WAR dosyasının WEB-INF / classes klasöründe paketlenecektir.

Bu örnekte, fax.war adlı bir savaş dosyası oluşturuyoruz. WEB.XML dosyası web kaynak klasöründen alınır. Web altındaki 'WebContent' klasöründeki tüm dosyalar WAR dosyasına kopyalanır.

WEB-INF / lib klasörü, thirdpartyjars klasöründeki jar dosyalarıyla doldurulur. Ancak, uygulama sunucusunun lib klasöründe zaten mevcut olduğu için portlet.jar dosyasını hariç tutuyoruz. Son olarak, yapı dizininin web klasöründeki tüm sınıfları kopyalayıp WEB-INF / sınıflar klasörüne koyuyoruz.

Savaş görevini bir Ant hedefinin (genellikle paket) içine sarın ve çalıştırın. Bu, belirtilen konumda WAR dosyasını oluşturacaktır.

Proje yapısının herhangi bir yerinde dağınık klasörlerde yaşamaları için sınıfları, lib, metainf ve webinf direktörlerini iç içe yerleştirmek tamamen mümkündür. Ancak en iyi uygulamalar, Web projenizin WAR dosyasının yapısına benzer Web İçeriği yapısına sahip olması gerektiğini önermektedir. Faks Uygulaması projesinin yapısı bu temel ilke kullanılarak özetlenmiştir.

Savaş görevini yürütmek için onu bir hedefin, en yaygın olarak oluşturma veya paketleme hedefinin içine sarın ve çalıştırı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>

Ant'ı bu dosyada çalıştırmak, fax.war bizim için dosya.

Aşağıdaki sonuç, Ant dosyasını çalıştırmanın sonucudur -

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

BUILD SUCCESSFUL
Total time: 12.3 seconds

Fax.war dosyası artık çıktı klasörüne yerleştirilmiştir. Savaş dosyasının içeriği -

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