Panduan Cepat Semut

ANT adalah singkatan dari Another Neat Tool. Ini adalah alat build berbasis Java dari Apache. Sebelum membahas detail Apache Ant, pertama-tama mari kita pahami mengapa kita membutuhkan alat build.

Kebutuhan Alat Bangun

Rata-rata, pengembang menghabiskan banyak waktu untuk melakukan tugas-tugas biasa seperti membangun dan menerapkan yang meliputi:

  • Menyusun kode
  • Mengemas binari
  • Menerapkan biner ke server pengujian
  • Menguji perubahan
  • Menyalin kode dari satu lokasi ke lokasi lain

Untuk mengotomatiskan dan menyederhanakan tugas-tugas di atas, Apache Ant berguna. Ini adalah alat pembuatan dan penyebaran Sistem Operasi yang dapat dijalankan dari baris perintah.

Sejarah Semut Apache

  • Semut diciptakan oleh James Duncan Davidson (penulis asli Tomcat).

  • Awalnya digunakan untuk membangun Tomcat, dan dibundel sebagai bagian dari distribusi Tomcat.

  • Ant lahir dari masalah dan kerumitan yang terkait dengan alat Apache Make.

  • Ant dipromosikan sebagai proyek independen di Apache pada tahun 2000. Versi terbaru dari Apache Ant pada Mei 2014 adalah 1.9.4.

Fitur Apache Ant

  • Ant adalah alat pembuatan dan penerapan Java terlengkap yang tersedia.

  • Ant adalah platform netral dan dapat menangani properti khusus platform seperti pemisah file.

  • Ant dapat digunakan untuk melakukan tugas khusus platform seperti memodifikasi waktu modifikasi file menggunakan perintah 'sentuh'.

  • Skrip semut ditulis menggunakan XML biasa. Jika Anda sudah terbiasa dengan XML, Anda bisa mempelajari Ant dengan cukup cepat.

  • Ant pandai mengotomatiskan tugas berulang yang rumit.

  • Ant hadir dengan daftar besar tugas yang telah ditentukan sebelumnya.

  • Ant menyediakan antarmuka untuk mengembangkan tugas khusus.

  • Ant dapat dengan mudah dipanggil dari baris perintah dan dapat diintegrasikan dengan IDE gratis dan komersial.

Apache Ant Ant didistribusikan di bawah Lisensi Perangkat Lunak Apache, lisensi sumber terbuka lengkap yang disertifikasi oleh inisiatif sumber terbuka.

Versi Apache Ant terbaru, termasuk kode sumber lengkapnya, file kelas, dan dokumentasinya dapat ditemukan di http://ant.apache.org.

Menginstal Apache Ant

Diasumsikan bahwa Anda telah mengunduh dan menginstal Java Development Kit (JDK) di komputer Anda. Jika tidak, harap ikuti petunjuknya di sini .

  • Pastikan variabel lingkungan JAVA_HOME disetel ke folder tempat JDK Anda diinstal.

  • Unduh binari dari http://ant.apache.org

  • Buka zip file zip ke lokasi yang diinginkan c: \ folder. menggunakan Winzip, winRAR, 7-zip atau alat serupa.

  • Buat variabel lingkungan baru bernama ANT_HOME yang menunjuk ke folder instalasi Ant, dalam kasus ini c:\apache-ant-1.8.2-bin map.

  • Tambahkan jalur ke file batch Apache Ant ke variabel lingkungan PATH. Dalam kasus kami ini akan menjadic:\apache-ant-1.8.2-bin\bin map.

Memverifikasi Instalasi Apache Ant

Untuk memverifikasi keberhasilan instalasi Apache Ant di komputer Anda, ketik ant pada prompt perintah Anda.

Anda akan melihat keluaran yang mirip dengan:

C:\>ant -version
Apache Ant(TM) version 1.8.2 compiled on December 20 2010

Jika Anda tidak melihat keluaran di atas, maka harap verifikasi bahwa Anda telah mengikuti langkah-langkah instalasi dengan benar.

Menginstal Eclipse

Tutorial ini juga mencakup integrasi Ant dengan Eclipse IDE. Karenanya, jika Anda belum menginstal Eclipse, harap unduh dan instal Eclipse

Untuk menginstal Eclipse:

  • Unduh binari Eclipse terbaru dari www.eclipse.org

  • Unzip binari Eclipse ke lokasi yang nyaman, misalnya folder c: \

  • Jalankan Eclipse dari c: \ eclipse \ eclipse.exe

Biasanya, file build Ant, bernama build.xmlharus berada di direktori dasar proyek. Namun tidak ada batasan pada nama file atau lokasinya. Anda bebas menggunakan nama file lain atau menyimpan file build di beberapa lokasi lain.

Untuk latihan ini, buat file bernama build.xml di mana saja di komputer Anda dengan konten berikut di dalamnya:

<?xml version="1.0"?>
   <project name="Hello World Project" default="info">
   <target name="info">
      <echo>Hello World - Welcome to Apache Ant!</echo>
   </target>
</project>

Perhatikan bahwa tidak boleh ada baris atau spasi kosong sebelum deklarasi xml. Jika Anda mengizinkannya, pesan kesalahan berikut terjadi saat menjalankan ant build -

Pencocokan target instruksi pemrosesan "[xX] [mM] [lL]" tidak diizinkan. Semua file build memerlukanproject elemen dan setidaknya satu target elemen.

Elemen XML project memiliki tiga atribut:

Atribut Deskripsi
nama Nama proyek. (Pilihan)
default Target default untuk skrip build. Sebuah proyek mungkin berisi sejumlah target. Atribut ini menentukan target mana yang harus dianggap sebagai default. (Wajib)
basedir Direktori dasar (atau) folder root untuk proyek tersebut. (Pilihan)

Target adalah kumpulan tugas yang ingin Anda jalankan sebagai satu unit. Dalam contoh kami, kami memiliki target sederhana untuk memberikan pesan informasi kepada pengguna.

Target dapat memiliki ketergantungan pada target lain. Misalnya, adeploy target mungkin memiliki ketergantungan pada package target, itu package target mungkin memiliki ketergantungan pada compiletarget dan lain sebagainya. Dependensi dilambangkan dengandependsatribut. Sebagai contoh:

<target name="deploy" depends="package">
  ....
</target>
<target name="package" depends="clean,compile">
  ....
</target>
<target name="clean" >
  ....
</target>
<target name="compile" >
  ....
</target>

Elemen target memiliki atribut berikut:

Atribut Deskripsi
nama Nama target (Wajib)
tergantung Daftar yang dipisahkan koma dari semua target yang bergantung pada target ini. (Pilihan)
deskripsi Deskripsi singkat tentang target. (pilihan)
jika Memungkinkan eksekusi target berdasarkan kebenaran atribut bersyarat. (pilihan)
kecuali kalau Menambahkan target ke daftar ketergantungan dari Titik Ekstensi yang ditentukan. Titik Ekstensi mirip dengan target, tetapi tidak memiliki tugas apa pun. (Pilihan)

Itu echotugas pada contoh di atas adalah tugas sepele yang mencetak pesan. Dalam contoh kita, ini mencetak pesan Hello World .

Untuk menjalankan file ant build, buka command prompt dan arahkan ke folder tempat build.xml berada, dan ketik ant info. Anda juga bisa mengetikantsebagai gantinya. Keduanya akan bekerja, karenainfoadalah target default dalam file build. Anda harus melihat output berikut:

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

info: [echo] Hello World - Welcome to Apache Ant!

BUILD SUCCESSFUL
Total time: 0 seconds

C:\>

File ant build ditulis dalam XML, yang tidak mengizinkan deklarasi variabel seperti yang Anda lakukan dalam bahasa pemrograman favorit Anda. Namun, seperti yang Anda bayangkan, akan berguna jika Ant mengizinkan deklarasi variabel seperti nama proyek, direktori sumber proyek, dll.

Semut menggunakan propertyelemen yang memungkinkan Anda menentukan properti. Ini memungkinkan properti diubah dari satu build ke build lain atau dari satu lingkungan ke lingkungan lain.

Secara default, Ant menyediakan properti yang telah ditentukan sebelumnya yang dapat digunakan dalam file build:

Properti Deskripsi
ant.file Lokasi lengkap file build.
ant.version Versi penginstalan Apache Ant.
basedir Dasar dari build, seperti yang ditentukan di basedir atribut dari project elemen.
ant.java.version Versi JDK yang digunakan oleh Ant.
ant.project.name Nama proyek, seperti yang ditentukan di name atribut dari project elemen.
ant.project.default-target Target default dari proyek saat ini.
ant.project.invoked-target Daftar target yang dipisahkan koma yang dipanggil dalam proyek saat ini.
ant.core.lib Lokasi lengkap file jar Ant.
semut rumah Direktori home instalasi Ant.
ant.library.dir Direktori home untuk file perpustakaan Ant - biasanya folder ANT_HOME / lib.

Ant juga membuat properti sistem (Contoh: file.separator) tersedia untuk file build.

Selain di atas, pengguna dapat menentukan properti tambahan menggunakan propertyelemen. Contoh berikut menunjukkan bagaimana mendefinisikan properti yang dipanggilsitename:

<?xml version="1.0"?>
<project name="Hello World Project" default="info">
   <property name="sitename" value="www.tutorialspoint.com"/>
   <target name="info">
      <echo>Apache Ant version is ${ant.version} - You are 
         at ${sitename} </echo>
   </target>
</project>

Menjalankan Ant pada file build di atas menghasilkan output berikut:

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

info: [echo] Apache Ant version is Apache Ant(TM) version 1.8.2  
      compiled on December 20 2010 - You are at www.tutorialspoint.com

BUILD SUCCESSFUL
Total time: 0 seconds
C:\>

Menyetel properti secara langsung di file build tidak masalah, jika Anda bekerja dengan beberapa properti. Namun, untuk proyek besar, masuk akal untuk menyimpan properti dalam file properti terpisah.

Menyimpan properti dalam file terpisah menawarkan keuntungan sebagai berikut:

  • Ini memungkinkan Anda untuk menggunakan kembali file build yang sama, dengan setelan properti berbeda untuk lingkungan eksekusi yang berbeda. Misalnya, file properti build dapat disimpan secara terpisah untuk lingkungan DEV, TEST, dan PROD.

  • Ini berguna saat Anda tidak mengetahui nilai properti (dalam lingkungan tertentu) sebelumnya. Ini memungkinkan Anda melakukan build di lingkungan lain tempat nilai propertinya diketahui.

Tidak ada aturan keras dan cepat, tetapi biasanya file properti diberi nama build.properties dan ditempatkan di sepanjang sisi build.xmlmengajukan. Anda dapat membuat beberapa file properti build berdasarkan lingkungan penerapan - sepertibuild.properties.dev dan build.properties.test.

Konten dari file properti build mirip dengan file properti java pada umumnya. Mereka berisi satu properti per baris. Setiap properti diwakili oleh nama dan pasangan nilai. Pasangan nama dan nilai dipisahkan oleh tanda sama dengan (=). Sangat disarankan agar properti dianotasi dengan komentar yang sesuai. Komentar dicantumkan menggunakan karakter hash (#).

Contoh berikut menunjukkan a build.xml file dan yang terkait build.properties mengajukan:

build.xml

<?xml version="1.0"?>
<project name="Hello World Project" default="info">
   <property file="build.properties"/>
      <target name="info">
         <echo>Apache Ant version is ${ant.version} - You are 
            at ${sitename} </echo>
      </target>
</project>

build.properties

# The Site Name
sitename=www.tutorialspoint.com
buildversion=3.3.2

Dalam contoh di atas, sitenameadalah properti khusus yang dipetakan ke nama situs web. Anda dapat mendeklarasikan sejumlah properti kustom dengan cara ini. Properti kustom lainnya yang tercantum dalam contoh di atas adalahbuildversion, yang, dalam hal ini, mengacu pada versi build.

Selain di atas, Ant hadir dengan sejumlah properti build standar, yang dicantumkan di bagian sebelumnya, tetapi ditampilkan di bawah ini sekali lagi.

Properti Deskripsi
ant.file Lokasi lengkap file build.
ant.version Versi penginstalan Apache Ant.
basedir Dasar dari build, seperti yang ditentukan di basedir atribut dari project elemen.
ant.java.version Versi JDK yang digunakan oleh Ant.
ant.project.name Nama proyek, seperti yang ditentukan di name atribut dari project elemen.
ant.project.default-target Target default dari proyek saat ini.
ant.project.invoked-target Daftar target yang dipisahkan koma yang dipanggil dalam proyek saat ini.
ant.core.lib Lokasi lengkap file jar Ant.
semut rumah Direktori home instalasi Ant.
ant.library.dir Direktori home untuk file perpustakaan Ant - biasanya folder ANT_HOME / lib.

Contoh yang disajikan dalam bab ini menggunakan ant.version properti bawaan.

Ant menyediakan sejumlah tipe data yang telah ditentukan sebelumnya. Jangan bingung istilah "tipe data" dengan yang tersedia dalam bahasa pemrograman, sebagai gantinya anggap mereka sebagai satu set layanan yang sudah dibangun ke dalam produk.

Tipe data berikut disediakan oleh Apache Ant.

Kumpulan file

Tipe data kumpulan file mewakili kumpulan file. Ini digunakan sebagai filter untuk menyertakan atau mengecualikan file yang cocok dengan pola tertentu.

Misalnya, lihat kode berikut. Di sini, atribut src mengarah ke folder sumber proyek.

Kumpulan file memilih semua file .java di folder sumber kecuali yang berisi kata 'Stub'. Filter case-sensitive diterapkan ke kumpulan file yang berarti file dengan nama Samplestub.java tidak akan dikecualikan dari kumpulan file.

<fileset dir="${src}" casesensitive="yes">
   <include name="**/*.java"/>
   <exclude name="**/*Stub*"/>
</fileset>

Set pola

Kumpulan pola adalah pola yang memungkinkan untuk memfilter file atau folder dengan mudah berdasarkan pola tertentu. Pola dapat dibuat menggunakan karakter meta berikut:

  • ? - Hanya cocok dengan satu karakter.

  • * - Mencocokkan nol atau banyak karakter.

  • ** - Mencocokkan nol atau banyak direktori secara rekursif.

Contoh berikut menggambarkan penggunaan kumpulan pola.

<patternset id="java.files.without.stubs">
   <include name="src/**/*.java"/>
   <exclude name="src/**/*Stub*"/>
</patternset>

Patternset kemudian dapat digunakan kembali dengan kumpulan file sebagai berikut:

<fileset dir="${src}" casesensitive="yes">
   <patternset refid="java.files.without.stubs"/>
</fileset>

Daftar file

Jenis data daftar file mirip dengan kumpulan file kecuali perbedaan berikut:

  • filelist berisi daftar file yang dinamai secara eksplisit dan tidak mendukung wild card.

  • tipe data daftar file dapat diterapkan untuk file yang ada atau tidak ada.

Mari kita lihat contoh tipe data daftar file berikut. Di sini, atributnyawebapp.src.folder menunjuk ke folder sumber aplikasi web proyek.

<filelist id="config.files" dir="${webapp.src.folder}">
   <file name="applicationConfig.xml"/>
   <file name="faces-config.xml"/>
   <file name="web.xml"/>
   <file name="portlet.xml"/>
</filelist>

Set filter

Menggunakan tipe data filteret bersama dengan tugas salin, Anda dapat mengganti teks tertentu di semua file yang cocok dengan pola dengan nilai pengganti.

Contoh umum adalah menambahkan nomor versi ke file catatan rilis, seperti yang ditunjukkan pada kode berikut.

<copy todir="${output.dir}">
   <fileset dir="${releasenotes.dir}" includes="**/*.txt"/>
   <filterset>
      <filter token="VERSION" value="${current.version}"/>
   </filterset>
</copy>

Dalam Kode ini:

  • Atribut output.dir menunjuk ke folder keluaran proyek.

  • Atribut releasenotes.dir menunjuk ke folder catatan rilis proyek.

  • Atribut current.version menunjuk ke folder versi proyek saat ini.

  • Tugas salin, seperti namanya, digunakan untuk menyalin file dari satu lokasi ke lokasi lain.

Jalan

Itu pathtipe data biasanya digunakan untuk mewakili jalur kelas. Entri di jalur dipisahkan menggunakan titik koma atau titik dua. Namun, karakter ini diganti pada saat proses oleh karakter pemisah jalur sistem yang menjalankan.

Classpath disetel ke daftar kelas dan file jar dalam proyek, seperti yang ditunjukkan pada contoh di bawah ini.

<path id="build.classpath.jar">
   <pathelement path="${env.J2EE_HOME}/${j2ee.jar}"/>
   <fileset dir="lib">
      <include name="**/*.jar"/>
   </fileset>
</path>

Dalam kode ini:

  • Atribut env.J2EE_HOME menunjuk ke variabel lingkungan J2EE_HOME.

  • Atribut j2ee.jar menunjuk ke nama file jar J2EE di folder dasar J2EE.

Sekarang kita telah mempelajari tentang tipe data di Ant, sekarang saatnya untuk menerapkan pengetahuan tersebut. Kami akan membangun proyek di bab ini. Tujuan dari bab ini adalah untuk membuat file Ant yang mengkompilasi kelas-kelas java dan menempatkannya di folder WEB-INF \ kelas.

Pertimbangkan struktur proyek berikut:

  • Skrip database disimpan di db map.

  • Kode sumber java disimpan di src map.

  • Gambar, js, META-INF, gaya (css) disimpan di file war map.

  • JSP disimpan di file jsp map.

  • File jar pihak ketiga disimpan di lib map.

  • File kelas java disimpan di WEB-INF\classes map.

Proyek ini membentuk Hello World Aplikasi Fax untuk sisa tutorial ini.

C:\work\FaxWebApplication>tree
Folder PATH listing
Volume serial number is 00740061 EC1C:ADB1
C:.
+---db
+---src
.  +---faxapp
.  +---dao
.  +---entity
.  +---util
.  +---web
+---war
   +---images
   +---js
   +---META-INF
   +---styles
   +---WEB-INF
      +---classes
      +---jsp
      +---lib

Berikut adalah build.xml yang diperlukan untuk proyek ini. Mari kita bahas sepotong demi sepotong.

<?xml version="1.0"?>
<project name="fax" basedir="." default="build">
   <property name="src.dir" value="src"/>
   <property name="web.dir" value="war"/>
   <property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
   <property name="name" value="fax"/>

   <path id="master-classpath">
      <fileset dir="${web.dir}/WEB-INF/lib">
         <include name="*.jar"/>
      </fileset>
      <pathelement path="${build.dir}"/>
   </path>

   <target name="build" description="Compile source tree java files">
      <mkdir dir="${build.dir}"/>
      <javac destdir="${build.dir}" source="1.5" target="1.5">
         <src path="${src.dir}"/>
         <classpath refid="master-classpath"/>
      </javac>
   </target>
 
   <target name="clean" description="Clean output directories">
      <delete>
         <fileset dir="${build.dir}">
            <include name="**/*.class"/>
         </fileset>
      </delete>
   </target>
</project>

Pertama, mari kita deklarasikan beberapa properti untuk folder source, web, dan build.

<property name="src.dir" value="src"/>
<property name="web.dir" value="war"/>
<property name="build.dir" value="${web.dir}/WEB-INF/classes"/>

Dalam contoh ini:

  • src.dir mengacu pada folder sumber proyek tempat file sumber java dapat ditemukan.

  • web.dir mengacu pada folder sumber web proyek, tempat Anda dapat menemukan JSP, web.xml, css, javascript, dan file terkait web lainnya

  • build.dir mengacu pada folder keluaran dari kompilasi proyek.

Properti dapat merujuk ke properti lain. Seperti yang ditunjukkan pada contoh di atas, filebuild.dir properti membuat referensi ke web.dir Properti.

Dalam contoh ini, file src.dir mengacu pada folder sumber proyek.

Target default proyek kami adalah compiletarget. Tapi pertama-tama mari kita lihatclean target.

Target bersih, seperti namanya, menghapus file di folder build.

<target name="clean" description="Clean output directories">
   <delete>
      <fileset dir="${build.dir}">
         <include name="**/*.class"/>
      </fileset>
   </delete>
</target>

Master-classpath menyimpan informasi classpath. Dalam hal ini, ini menyertakan kelas-kelas dalam folder build dan file jar di folder lib.

<path id="master-classpath">
   <fileset dir="${web.dir}/WEB-INF/lib">
      <include name="*.jar"/>
   </fileset>
   <pathelement path="${build.dir}"/>
</path>

Terakhir, build target untuk membangun file. Pertama-tama, buat direktori build, jika belum ada. Kemudian kami menjalankan perintah javac (menetapkan jdk1.5 sebagai kompilasi target kami). Kami menyediakan folder sumber dan classpath ke tugas javac dan memintanya untuk melepaskan file kelas di folder build.

<target name="build" description="Compile main source tree java files">
   <mkdir dir="${build.dir}"/>
   <javac destdir="${build.dir}" source="1.5" target="1.5" debug="true"
      deprecation="false" optimize="false" failonerror="true">
      <src path="${src.dir}"/>
      <classpath refid="master-classpath"/>
   </javac>
</target>

Pelaksana Ant pada file ini mengkompilasi file sumber java dan menempatkan kelas-kelas di folder build.

Hasil berikut ini adalah hasil dari menjalankan file Ant:

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

BUILD SUCCESSFUL
Total time: 6.3 seconds

File-file tersebut dikompilasi dan ditempatkan di build.dir map.

Dokumentasi adalah suatu keharusan dalam proyek apa pun. Dokumentasi memainkan peran besar dalam pemeliharaan proyek. Java membuat dokumentasi lebih mudah dengan menggunakan built-injavadocalat. Ant membuatnya lebih mudah dengan membuat dokumentasi sesuai permintaan.

Seperti yang Anda ketahui, alat javadoc sangat fleksibel dan memungkinkan sejumlah opsi konfigurasi. Ant memperlihatkan opsi konfigurasi ini melalui tugas javadoc. Jika Anda tidak terbiasa dengan javadocs, kami sarankan Anda memulai dengan Tutorial Dokumentasi Java ini .

Bagian berikut mencantumkan opsi javadoc yang paling umum digunakan yang digunakan di Ant.

Atribut

Sumber dapat ditentukan menggunakan sourcepath, sourcepathref atau sourcefiles.

  • sourcepath digunakan untuk menunjuk ke folder dari file sumber (mis. folder src).

  • sourcepathref digunakan untuk merujuk jalur yang direferensikan oleh atribut jalur (misalnya, delegates.src.dir).

  • sourcefiles digunakan saat Anda ingin menentukan file individual sebagai daftar yang dipisahkan koma.

Jalur tujuan ditentukan menggunakan destdir folder (misalnya build.dir).

Anda bisa memfilter javadoctugas dengan menentukan nama paket yang akan disertakan. Ini dicapai dengan menggunakanpackagenames atribut, daftar file paket yang dipisahkan koma.

Anda dapat memfilter proses javadoc untuk hanya menampilkan kelas dan anggota publik, privat, paket, atau dilindungi. Ini dicapai dengan menggunakanprivate, public, package dan protected atribut.

Anda juga dapat memberi tahu tugas javadoc untuk menyertakan penulis dan informasi versi menggunakan atribut masing-masing.

Anda juga dapat mengelompokkan paket bersama menggunakan group atribut, sehingga menjadi mudah dinavigasi.

Menyatukan semuanya

Mari kita lanjutkan tema kita dari Hello worldAplikasi faks. Mari kita tambahkan target dokumentasi ke proyek aplikasi Faks kita.

Diberikan di bawah ini adalah contoh tugas javadoc yang digunakan dalam proyek kami. Dalam contoh ini, kami telah menetapkan javadoc untuk menggunakan filesrc.dir sebagai direktori sumber, dan doc sebagai target.

Kami juga telah menyesuaikan informasi judul jendela, header, dan footer yang muncul di halaman dokumentasi java.

Juga, kami telah membuat tiga grup:

  • satu untuk kelas utilitas di folder sumber kami,
  • satu untuk kelas antarmuka pengguna, dan
  • satu untuk kelas terkait database.

Anda mungkin memperhatikan bahwa grup paket data memiliki dua paket - faxapp.entity dan faxapp.dao.

<target name="generate-javadoc">
   <javadoc packagenames="faxapp.*" sourcepath="${src.dir}" 
      destdir="doc" version="true" windowtitle="Fax Application">
      <doctitle><![CDATA[= Fax Application =]]></doctitle>
      <bottom>
         <![CDATA[Copyright © 2011. All Rights Reserved.]]>
      </bottom>
      <group title="util packages" packages="faxapp.util.*"/>
      <group title="web packages" packages="faxapp.web.*"/>
      <group title="data packages" 
         packages="faxapp.entity.*:faxapp.dao.*"/>
   </javadoc>
   <echo message="java doc has been generated!" />
</target>

Mari kita jalankan tugas Ant javadoc. Ini menghasilkan dan menempatkan file dokumentasi java di folder doc.

Ketika javadoc target dijalankan, itu menghasilkan hasil sebagai berikut:

C:\>ant generate-javadoc
Buildfile: C:\build.xml

java doc has been generated!

BUILD SUCCESSFUL
Total time: 10.63 second

File dokumentasi java sekarang ada di doc map.

Biasanya, file javadoc dibuat sebagai bagian dari rilis atau target paket.

Langkah logis berikutnya setelah mengkompilasi file sumber java Anda, adalah membangun arsip java, yaitu file JAR. Membuat file JAR dengan Ant cukup mudah denganjartugas. Atribut yang umum digunakan dari tugas jar adalah sebagai berikut:

Atribut Deskripsi
basedir Direktori dasar untuk file JAR keluaran. Secara default, ini disetel ke direktori dasar proyek.
kompres Menyarankan Ant untuk mengompres file saat membuat file JAR.
keepcompression Selagi compress atribut ini berlaku untuk file individu, file keepcompression atribut melakukan hal yang sama, tetapi berlaku untuk seluruh arsip.
destfile Nama file JAR keluaran.
duplikat Menasihati Ant tentang apa yang harus dilakukan ketika file duplikat ditemukan. Anda dapat menambah, mempertahankan, atau menggagalkan file duplikat.
tidak termasuk Menyarankan Ant untuk tidak menyertakan daftar file yang dipisahkan koma ini dalam paket.
excludesfile Sama seperti di atas, kecuali file kecualikan ditentukan menggunakan pola.
termasuk Pembalikan dari pengecualian.
termasuk file Invers dari excludesfile.
memperbarui Menyarankan Ant untuk menimpa file di file JAR yang sudah dibuat.

Melanjutkan kami Hello WorldProyek Aplikasi Fax, mari kita tambahkan target baru untuk menghasilkan file jar. Tapi sebelum itu, mari kita pertimbangkan tugas jar yang diberikan di bawah ini.

<jar destfile="${web.dir}/lib/util.jar"
   basedir="${build.dir}/classes"
   includes="faxapp/util/**"
   excludes="**/Test.class"
/>

Di sini web.dirproperti menunjuk ke jalur file sumber web. Dalam kasus kami, di sinilah util.jar akan ditempatkan.

Itu build.dir properti dalam contoh ini menunjuk ke folder build tempat file kelas untuk util.jar dapat ditemukan.

Dalam contoh ini, kami membuat file jar bernama util.jar menggunakan kelas dari faxapp.util.*paket. Namun, kami mengecualikan kelas yang diakhiri dengan nama Test. File jar keluaran akan ditempatkan di folder lib aplikasi web.

Jika kita ingin menjadikan util.jar sebagai file jar yang dapat dieksekusi, kita perlu menambahkan manifest dengan Main-Class atribut meta.

Oleh karena itu, contoh di atas akan diperbarui sebagai:

<jar destfile="${web.dir}/lib/util.jar"
   basedir="${build.dir}/classes"
   includes="faxapp/util/**"
   excludes="**/Test.class">
   <manifest>
      <attribute name="Main-Class" value="com.tutorialspoint.util.FaxUtil"/>
   </manifest>
</jar>

Untuk menjalankan tugas jar, masukkan ke dalam target, paling umum, build atau paket target, dan jalankan.

<target name="build-jar">
<jar destfile="${web.dir}/lib/util.jar"
   basedir="${build.dir}/classes"
   includes="faxapp/util/**"
   excludes="**/Test.class">
   <manifest>
      <attribute name="Main-Class" value="com.tutorialspoint.util.FaxUtil"/>
   </manifest>
</jar>
</target>

Menjalankan Ant pada file ini membuat file util.jar untuk kita.

Hasil berikut ini adalah hasil dari menjalankan file Ant:

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

BUILD SUCCESSFUL
Total time: 1.3 seconds

File util.jar sekarang ditempatkan di folder output.

Membuat file WAR dengan Ant sangat sederhana, dan sangat mirip dengan tugas membuat file JAR. Bagaimanapun, file WAR, seperti file JAR hanyalah file ZIP lainnya.

Tugas WAR adalah perpanjangan dari tugas JAR, tetapi memiliki beberapa tambahan yang bagus untuk memanipulasi apa yang masuk ke folder WEB-INF / class, dan menghasilkan file web.xml. Tugas WAR berguna untuk menentukan tata letak tertentu dari file WAR.

Karena tugas WAR adalah perpanjangan dari tugas JAR, semua atribut tugas JAR berlaku untuk tugas WAR.

Atribut Deskripsi
webxml Jalur ke file web.xml
lib Pengelompokan untuk menentukan apa yang masuk ke folder WEB-INF \ lib.
kelas Pengelompokan untuk menentukan apa yang masuk ke folder kelas WEB-INF \.
metainf Menentukan instruksi untuk membuat file MANIFEST.MF.

Melanjutkan kami Hello WorldProyek Aplikasi Fax, mari kita tambahkan target baru untuk menghasilkan file jar. Tapi sebelumnya mari kita pertimbangkan tugas perang. Perhatikan contoh berikut:

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

Seperti contoh sebelumnya, file web.dir variabel mengacu pada folder web sumber, yaitu folder yang berisi file JSP, css, javascript dll.

Itu build.dirvariabel merujuk ke folder keluaran - Di sinilah kelas untuk paket WAR dapat ditemukan. Biasanya, kelas-kelas akan digabungkan ke dalam folder WEB-INF / kelas dari file WAR.

Dalam contoh ini, kami membuat file perang bernama fax.war. File WEB.XML diperoleh dari folder sumber web. Semua file dari folder 'WebContent' di bawah web disalin ke dalam file WAR.

Folder WEB-INF / lib diisi dengan file jar dari folder thirdpartyjars. Namun, kami mengecualikan portlet.jar karena ini sudah ada di folder lib server aplikasi. Terakhir, kami menyalin semua kelas dari folder web direktori build dan meletakkannya di folder WEB-INF / class.

Bungkus tugas perang di dalam target Ant (biasanya paket) dan jalankan. Ini akan membuat file WAR di lokasi yang ditentukan.

Sangat mungkin untuk menyarangkan class, lib, metainf, dan direktur webinf sehingga mereka tinggal di folder yang tersebar di mana saja dalam struktur project. Tetapi praktik terbaik menyarankan bahwa proyek Web Anda harus memiliki struktur Konten Web yang mirip dengan struktur file WAR. Struktur proyek Aplikasi Faks diuraikan menggunakan prinsip dasar ini.

Untuk menjalankan tugas perang, masukkan ke dalam target, paling umum, build atau paket target, dan jalankan.

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

Menjalankan Ant pada file ini akan membuat file fax.war mengajukan untuk kami.

Hasil berikut ini adalah hasil dari menjalankan file Ant:

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

BUILD SUCCESSFUL
Total time: 12.3 seconds

File fax.war sekarang ditempatkan di folder output. Isi file perang adalah:

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

Kami telah mempelajari berbagai aspek Ant menggunakan Hello World Aplikasi web faks sedikit demi sedikit.

Sekarang saatnya menyatukan semuanya untuk membuat file build.xml yang lengkap dan lengkap. Mempertimbangkanbuild.properties dan build.xml file sebagai berikut:

build.properties

deploy.path=c:\tomcat6\webapps

build.xml

<?xml version="1.0"?>

<project name="fax" basedir="." default="usage">
   <property file="build.properties"/>
   <property name="src.dir" value="src"/>
   <property name="web.dir" value="war"/>
   <property name="javadoc.dir" value="doc"/>
   <property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
   <property name="name" value="fax"/>

   <path id="master-classpath">
      <fileset dir="${web.dir}/WEB-INF/lib">
         <include name="*.jar"/>
      </fileset>
      <pathelement path="${build.dir}"/>
   </path>
    
   <target name="javadoc">
      <javadoc packagenames="faxapp.*" sourcepath="${src.dir}" 
         destdir="doc" version="true" windowtitle="Fax Application">
      <doctitle><![CDATA[<h1>= Fax Application =</h1>]]>
      </doctitle>
      <bottom><![CDATA[Copyright © 2011. All Rights Reserved.]]>
      </bottom>
      <group title="util packages" packages="faxapp.util.*"/>
      <group title="web packages" packages="faxapp.web.*"/> 
      <group title="data packages" 
         packages="faxapp.entity.*:faxapp.dao.*"/>
      </javadoc>
   </target>

   <target name="usage">
      <echo message=""/>
      <echo message="${name} build file"/>
      <echo message="-----------------------------------"/>
      <echo message=""/>
      <echo message="Available targets are:"/>
      <echo message=""/>
      <echo message="deploy    --> Deploy application as directory"/>
      <echo message="deploywar --> Deploy application as a WAR file"/>
      <echo message=""/>
   </target>

   <target name="build" description="Compile main 
      source tree java files">
   <mkdir dir="${build.dir}"/>
      <javac destdir="${build.dir}" source="1.5" 
         target="1.5" debug="true"
         deprecation="false" optimize="false" failonerror="true">
      <src path="${src.dir}"/>
      <classpath refid="master-classpath"/>
      </javac>
   </target>

   <target name="deploy" depends="build" 
      description="Deploy application">
   <copy todir="${deploy.path}/${name}" 
      preservelastmodified="true">
      <fileset dir="${web.dir}">
         <include name="**/*.*"/>
      </fileset>
   </copy>
   </target>

   <target name="deploywar" depends="build" 
      description="Deploy application as a WAR file">
      <war destfile="${name}.war"
         webxml="${web.dir}/WEB-INF/web.xml">
         <fileset dir="${web.dir}">
            <include name="**/*.*"/>
         </fileset>
      </war>
      <copy todir="${deploy.path}" preservelastmodified="true">
         <fileset dir=".">
            <include name="*.war"/>
         </fileset>
      </copy>
   </target>
    

   <target name="clean" description="Clean output directories">
      <delete>
         <fileset dir="${build.dir}">
            <include name="**/*.class"/>
         </fileset>
      </delete>
   </target>
</project>

Dalam contoh ini:

  • Pertama-tama kami mendeklarasikan jalur ke folder webapps di Tomcat di file properti build sebagai file deploy.path variabel.

  • Kami juga mendeklarasikan folder sumber untuk file java di src.dir variabel.

  • Kemudian kami mendeklarasikan folder sumber untuk file web di web.dir variabel. javadoc.dir adalah folder untuk menyimpan dokumentasi java, dan build.dir adalah jalur untuk menyimpan file keluaran build.

  • Kemudian kami mendeklarasikan nama aplikasi web, yaitu fax dalam kasus kami.

  • Kami juga menentukan jalur kelas master yang berisi file JAR yang ada di folder WEB-INF / lib proyek.

  • Kami juga menyertakan file kelas yang ada di build.dir di jalur kelas master.

  • Target Javadoc menghasilkan javadoc yang diperlukan untuk proyek dan target penggunaan digunakan untuk mencetak target umum yang ada dalam file build.

Contoh di atas menunjukkan dua target penerapan: deploy dan deploywar.

Target penerapan menyalin file dari direktori web ke direktori penerapan dengan mempertahankan stempel waktu tanggal yang terakhir diubah. Ini berguna saat menyebarkan ke server yang mendukung penyebaran panas.

Target bersih membersihkan semua file yang dibangun sebelumnya.

Target deploywar membuat file perang dan kemudian menyalin file perang ke direktori penerapan server aplikasi.

Di bab sebelumnya, kita telah mempelajari cara mengemas aplikasi dan menerapkannya ke folder.

Pada bab ini, kita akan menerapkan aplikasi web langsung ke folder penerapan server aplikasi, kemudian kita akan menambahkan beberapa target Ant untuk memulai dan menghentikan layanan. Mari kita lanjutkan denganHello Worldaplikasi web faks. Ini adalah kelanjutan dari bab sebelumnya, komponen baru ditandai dengan huruf tebal.

build.properties

# Ant properties for building the springapp

appserver.home=c:\\install\\apache-tomcat-7.0.19
# for Tomcat 5 use $appserver.home}/server/lib
# for Tomcat 6 use $appserver.home}/lib
appserver.lib=${appserver.home}/lib

deploy.path=${appserver.home}/webapps

tomcat.manager.url=http://www.tutorialspoint.com:8080/manager
tomcat.manager.username=tutorialspoint
tomcat.manager.password=secret

build.xml

<?xml version="1.0"?>

<project name="fax" basedir="." default="usage">
   <property file="build.properties"/>
   <property name="src.dir" value="src"/>
   <property name="web.dir" value="war"/>
   <property name="javadoc.dir" value="doc"/>
   <property name="build.dir" value="${web.dir}/WEB-INF/classes"/>
   <property name="name" value="fax"/>

   <path id="master-classpath">
      <fileset dir="${web.dir}/WEB-INF/lib">
         <include name="*.jar"/>
      </fileset>
   <pathelement path="${build.dir}"/>
   </path>
    
   <target name="javadoc">
   <javadoc packagenames="faxapp.*" sourcepath="${src.dir}" 
      destdir="doc" version="true" windowtitle="Fax Application">
      <doctitle><![CDATA[<h1>= Fax Application 
         =</h1>]]></doctitle>
      <bottom><![CDATA[Copyright © 2011. All 
         Rights Reserved.]]></bottom>
      <group title="util packages" packages="faxapp.util.*"/>
      <group title="web packages" packages="faxapp.web.*"/>
      <group title="data packages" packages="faxapp.entity.*:faxapp.dao.*"/>
   </javadoc>
   </target>

   <target name="usage">
   <echo message=""/>
   <echo message="${name} build file"/>
   <echo message="-----------------------------------"/>
   <echo message=""/>
   <echo message="Available targets are:"/>
   <echo message=""/>
   <echo message="deploy    --> Deploy application as directory"/>
   <echo message="deploywar --> Deploy application as a WAR file"/>
   <echo message=""/>
   </target>

   <target name="build" description="Compile main 
      source tree java files">
   <mkdir dir="${build.dir}"/>
   <javac destdir="${build.dir}" source="1.5" target="1.5" debug="true"
      deprecation="false" optimize="false" failonerror="true">
      <src path="${src.dir}"/>
      <classpath refid="master-classpath"/>
   </javac>
   </target>

   <target name="deploy" depends="build" description="Deploy application">
      <copy todir="${deploy.path}/${name}" 
         preservelastmodified="true">
         <fileset dir="${web.dir}">
            <include name="**/*.*"/>
         </fileset>
      </copy>
   </target>

   <target name="deploywar" depends="build" 
      description="Deploy application as a WAR file">
      <war destfile="${name}.war"
         webxml="${web.dir}/WEB-INF/web.xml">
         <fileset dir="${web.dir}">
            <include name="**/*.*"/>
         </fileset>
      </war>
      <copy todir="${deploy.path}" preservelastmodified="true">
         <fileset dir=".">
            <include name="*.war"/>
         </fileset>
      </copy>
   </target>
    

   <target name="clean" description="Clean output directories">
      <delete>
         <fileset dir="${build.dir}">
            <include name="**/*.class"/>
         </fileset>
      </delete>
   </target>
<!-- ============================================================ -->
<!-- Tomcat tasks -->
<!-- ============================================================ -->

<path id="catalina-ant-classpath">
<!-- We need the Catalina jars for Tomcat -->
<!--  * for other app servers - check the docs -->
   <fileset dir="${appserver.lib}">
      <include name="catalina-ant.jar"/>
   </fileset>
</path>

<taskdef name="install" classname="org.apache.catalina.ant.InstallTask">
   <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask">
   <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask">
   <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="start" classname="org.apache.catalina.ant.StartTask">
   <classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask">
   <classpath refid="catalina-ant-classpath"/>
</taskdef>

<target name="reload" description="Reload application in Tomcat">
   <reload url="${tomcat.manager.url}"username="${tomcat.manager.username}"
      password="${tomcat.manager.password}" path="/${name}"/>
</target>
</project>

Dalam contoh ini ,, kami telah menggunakan Tomcat sebagai server aplikasi kami. Pertama, di file properti build, kami telah menentukan beberapa properti tambahan.

  • Itu appserver.home menunjuk ke jalur instalasi ke server aplikasi Tomcat.

  • Itu appserver.lib menunjuk ke file perpustakaan di folder instalasi Tomcat.

  • Itu deploy.path variabel sekarang mengarah ke folder webapp di Tomcat.

Aplikasi di Tomcat dapat dihentikan dan mulai menggunakan aplikasi manajer Tomcat. URL untuk aplikasi manajer, nama pengguna dan kata sandi juga ditentukan dalam file build.properties. Selanjutnya, kami mendeklarasikan CLASSPATH baru yang berisicatalina-ant.jar. File jar ini diperlukan untuk menjalankan tugas Tomcat melalui Apache Ant.

Catalina-ant.jar menyediakan tugas-tugas berikut:

Properti Deskripsi
InstallTask Instal aplikasi web. Nama Kelas: org.apache.catalina.ant.InstallTask
ReloadTask Muat ulang aplikasi web. Nama Kelas: org.apache.catalina.ant.ReloadTask
ListTask Mencantumkan semua aplikasi web. Nama Kelas: org.apache.catalina.ant.ListTask
StartTask Memulai aplikasi web. Nama Kelas: org.apache.catalina.ant.StartTask
StopTask Menghentikan aplikasi web. Nama Kelas: org.apache.catalina.ant.StopTask
ReloadTask Memuat ulang aplikasi web tanpa berhenti. Nama Kelas: org.apache.catalina.ant.ReloadTask

Tugas muat ulang membutuhkan parameter tambahan berikut:

  • URL ke aplikasi manajer
  • Nama pengguna untuk memulai ulang aplikasi web
  • Kata sandi untuk memulai ulang aplikasi web
  • Nama aplikasi web yang akan dimulai ulang

Mari kita keluarkan deploy-warperintah untuk menyalin aplikasi web ke folder webapps Tomcat dan kemudian mari kita muat ulang aplikasi Web Faks. Hasil berikut ini adalah hasil dari menjalankan file Ant:

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

BUILD SUCCESSFUL
Total time: 6.3 seconds

C:\>ant reload
Buildfile: C:\build.xml

BUILD SUCCESSFUL
Total time: 3.1 seconds

Setelah tugas di atas dijalankan, aplikasi web diterapkan dan aplikasi web dimuat ulang.

Anda dapat menggunakan Ant untuk menjalankan kode Java. Dalam contoh berikut, kelas java mengambil argumen (alamat email administrator) dan mengirimkan email.

public class NotifyAdministrator
{
   public static void main(String[] args)
   {
      String email = args[0];
      notifyAdministratorviaEmail(email);
      System.out.println("Administrator "+email+" has been notified");
   }
   public static void notifyAdministratorviaEmail(String email
   { 
	   //......
   }
}

Berikut adalah build sederhana yang menjalankan kelas java ini.

<?xml version="1.0"?>
<project name="sample" basedir="." default="notify">
   <target name="notify">
      <java fork="true" failonerror="yes" classname="NotifyAdministrator">
         <arg line="[email protected]"/>
      </java>
   </target>
</project>

Ketika pembangunan dijalankan, itu menghasilkan hasil sebagai berikut:

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

notify: [java] Administrator [email protected] has been notified

BUILD SUCCESSFUL
Total time: 1 second

Dalam contoh ini, kode java melakukan hal yang sederhana - mengirim email. Kita bisa menggunakan tugas Semut bawaan untuk melakukan itu. Namun, setelah Anda mendapatkan idenya, Anda dapat memperluas file build Anda untuk memanggil kode java yang melakukan hal-hal rumit, misalnya: mengenkripsi kode sumber Anda.

Jika Anda telah mengunduh dan menginstal Eclipse, Anda tidak perlu melakukan banyak hal untuk memulai. Eclipse hadir dengan paket awal dengan plugin Ant, siap digunakan.

Ikuti langkah-langkah sederhana, untuk mengintegrasikan Ant ke Eclipse.

  • Pastikan bahwa build.xml adalah bagian dari proyek java Anda, dan tidak berada di lokasi di luar proyek.

  • Aktifkan Ant View dengan mengikuti Window > Show View > Other > Ant > Ant.

  • Buka Project Explorer, seret build.xml ke Ant View.

Tampilan Semut Anda terlihat seperti:

Mengklik target, build / clean / usage akan menjalankan Ant dengan target tersebut.

Mengklik "faks" akan menjalankan target default - usage.

Plugin Ant Eclipse juga dilengkapi dengan editor yang bagus untuk mengedit file build.xml. Editor mengetahui skema build.xml dan dapat membantu Anda menyelesaikan kode.

Untuk menggunakan editor Ant, klik kanan build.xml Anda (dari Project Explorer) dan pilih Open with> Ant Editor. Editor Semut akan terlihat seperti ini:

Editor Semut mencantumkan target di sisi kanan. Daftar target berfungsi sebagai penanda yang memungkinkan Anda untuk langsung mengedit target tertentu.

JUnit adalah kerangka pengujian unit yang umum digunakan untuk pengembangan berbasis Java. Mudah digunakan dan mudah diperluas. Ada sejumlah ekstensi JUnit yang tersedia. Jika Anda tidak terbiasa dengan JUnit, Anda harus mendownloadnya dari www.junit.org dan membaca manualnya.

Bab ini menunjukkan cara menjalankan pengujian JUnit menggunakan Ant. Ant membuatnya langsung melalui tugas JUnit.

Atribut tugas JUnit disajikan di bawah ini:

Properti Deskripsi
dir Dari mana menggunakan VM. Ini diabaikan saatfork dinonaktifkan.
jvm Perintah yang digunakan untuk menjalankan JVM. Ini diabaikan saatfork dinonaktifkan.
garpu Menjalankan pengujian di JVM terpisah
errorproperty Nama properti yang akan disetel jika ada kesalahan JUnit
failureproperty Nama properti yang akan disetel jika ada kegagalan JUnit
haltonerror Menghentikan eksekusi saat terjadi kesalahan pengujian
haltonfailure Menghentikan eksekusi saat terjadi kegagalan
printsummary Menyarankan Ant untuk menampilkan statistik sederhana untuk setiap tes
showoutput Menyarankan Ant untuk mengirim keluaran ke log dan pemformatnya
tempdir Path ke file sementara yang akan digunakan Ant
waktu habis Keluar dari pengujian yang membutuhkan waktu lebih lama untuk dijalankan daripada setelan ini (dalam milidetik).

Mari kita lanjutkan tema Hello World Aplikasi web faks dan tambahkan target JUnit.

Contoh berikut menunjukkan eksekusi pengujian JUnit sederhana:

<target name="unittest">
   <junit haltonfailure="true" printsummary="true">
      <test name="com.tutorialspoint.UtilsTest"/>
   </junit>
</target>

Contoh ini menunjukkan eksekusi JUnit di kelas junit com.tutorialspoint.UtilsTest. Menjalankan kode di atas menghasilkan keluaran sebagai berikut:

test:
[echo] Testing the application
[junit] Running com.tutorialspoint.UtilsTest
[junit] Tests run: 12, Failures: 0, Errors: 0, Time elapsed: 16.2 sec
BUILD PASSED

Ant hadir dengan serangkaian tugas yang telah ditentukan sebelumnya, namun Anda dapat membuat tugas Anda sendiri, seperti yang ditunjukkan pada contoh di bawah ini.

Tugas Semut Kustom harus memperpanjang org.apache.tools.ant.Taskkelas dan harus memperluas metode execute (). Di bawah ini adalah contoh sederhana:

package com.tutorialspoint.ant;
import org.apache.tools.ant.Task;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.BuildException;
public class MyTask extends Task {
   String message;
   public void execute() throws BuildException {
      log("Message: " + message, Project.MSG_INFO);
   }
   public void setMessage(String message) {
      this.message= message;
   }
}

Untuk menjalankan tugas kustom, Anda perlu menambahkan yang berikut ini ke Hello World Aplikasi web faks:

<target name="custom">
   <taskdef name="custom" classname="com.tutorialspoint.ant.MyTask" />
   <custom message="Hello World!"/>
</target>

Menjalankan tugas kustom di atas akan mencetak pesan 'Hello World!'

c:\>ant custom
test:
[custom] Message : Hello World!
elapsed: 0.2 sec
BUILD PASSED

Ini hanyalah contoh sederhana, Anda dapat menggunakan kekuatan Ant untuk melakukan apa pun yang Anda inginkan untuk meningkatkan proses pembuatan dan penerapan.

Mencetak