İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Onder Teker
on_der_tek_er@yahoo.com

Ant Örneği

Ant, Apache organizasyonu tarafından Java projelerini derlemek ve benzeri geliştirme işlemleri için yapılmış, kendisi de Java'da yapılmış bir sistemdir. Bu örnekte bir Java projesinin derlenmesi ve çalıştırılması gibi işlemlerin nasıl yapılacağını gösteriliyor.

Ant'ta her bir işe 'target' denir. Bu target'lerde yapılması gereken işler belirtilir. Yapılacak işler dizin yaratılması veya herhnagi bir ant modülünün çağırılması şeklindedir. Ant modüllerine 'task' denir. Her target başka target'lere 'depends' (bağlı) olabilir. Bağlı olmak bir target gerçekleştirilmeden önce başka birinin de gerçekleştirilmiş olmasının zorunlu tutulması demektir. Ant daha önce gereçekleştir,ldiğini anladığı işleri tekrar yapmıyor. Örneğin derlenecek dosyalarda değişmemiş olanlar tekrar derlenmez. Ant'ın target'lerinde kullanılmak üzere çeşitli 'property'ler tanımlanambilir. Bunlar dosya 'location'u (konumu) veya herhangi bir value (değer) de olabilir.

Build.xml Dosyası

Ant'ta yapılacak işler 'build.xml' biçiminde bir XML dosyasında belirtilir. Ant aslında bir Java programıdır. Bu XML document'ini okur ve gereken işleri yapar.

Göster Gizle Kopar Satır Gizle Satır Göster
<project name="AntTest" default="compile" basedir=".">

  <property name="home" location=".."/>

  <property name="src" location="${home}/src"/>
  <property name="classes"  location="${home}/classes"/>
  <property name="lib"  location="${home}/lib"/>

  <property name="jar" location="${lib}/AntTest.jar"/>
  <property name="main"  value="com.godoro.ant.TestClass"/>
  <property name="arg0"  value="Arg 0"/>
 
  
  <target name="init">
    <tstamp/>
    <mkdir dir="${classes}"/>
  </target>

  <target name="compile" depends="init" >
    <javac srcdir="${src}" destdir="${classes}"/>
  </target>
  
  <target name="dist" depends="compile" >
    <mkdir dir="${home}/lib"/>
    <jar jarfile="${jar}" basedir="${home}/classes">
    <manifest>
        <attribute name="Main-Class" value="${main}"/>
    </manifest>
  </jar>
  </target>
  
  <target name="run" depends="dist" >
    <java jar="${jar}" fork="true">
     <arg value="${arg0}"/> 
       <classpath>
        <pathelement path="${jar}"/>
        </classpath>
    </java>
  </target>  
  

</project>

Bu build dosyasında 'init', 'compile','dist' ve 'run' gibi target'ler tanımlanmış. 'init' ilk olarak yapılması gerek işlemleri içeriyor ki bu da 'classes' diye bir klasörü 'mkdir'le yaratmak. En üste tanımlanan 'classes' adlı poperty kullanılıyor. Derlemek için 'compile' adlı target tanımlanmış. Adı 'javac' olan task'ı çağırıyor. Bu task Ant'ın tanıdığı temel tasklardan. JDK'nın javac'ını çağırıyor. 'compile'dan önce 'init'in yapılması gerektiğini 'depends'le belirtiyoruz. Zira classes dizini yaratılmadan bu derleme yapılmamalı.

Bu build file'ında 'dist' target'i derlenmiş class'ları bir jar'a koyuyor. 'jar' taskı class'ları jar'lamak için kullanılıyor. Bu komut'la manifest'te bildirmek mümkün. Burada Main-Class attributesi belirtilmiş. 'run' targetiyle de proje bu jar'dan çalıştırılıyor. Elbette 'run' targeti 'init','compile' ve 'dist' targetlerine bağlı. Ancak 'dist'e bağlı olduğunu belirmek yeterli. Çünkü 'dist' 'compile'a, 'compile' da 'init'e bağlı.

Örnek'te TestClass adlı bir class'tan oluşan projje derleniyor ve çalıştırılıyor. Test olarak kullanılan class şöyle :

Göster Gizle Kopar Satır Gizle Satır Göster
  1 package com.godoro.ant;
  2 public class TestClass {
  3   public TestClass() {
  4   }
  5   public static void main(String[] args) {
  6     System.out.println("Test Main!");
  7     System.out.println("args[0] : "+args[0]);
  8   }
  9 }

Ant'ı Kullanma

Ant'ı kurduktan sonra (CLASSPATH ve PATH değerleri antı görüyorsa) derlemek ve jar'lamak için build.xml'in olduğu klasörde (örneğin 'bin' klasöründe)

ant dist 

demek yeterlidir. Çalıtırmak için de

ant run 

yeterli olacaktır. Ant aplikasyonu build.xml'de belirtilen bilgilere göre gerekli işlemleri yapar. Bu örnekte bn folder'ın altında bin/build.xml,src/*.java classes/*.class varsayılmıştır. 'home' değişkeni bin'e göre bir üstü olduğu için '..' verilmiştir. Yapı şöyle kurulmuş :

home/
	bin/
		build.xml
	classes/
		TestClass.class
	src/
		TestClass.java

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır