Apache Ant

Apache Ant
Geliştirici(ler) Apache Yazılım Derneği
Kararlı sürüm 1.9.3 / Aralık 2013
Programlama dili Java
İşletim sistemi Tüm platformlar
Tür İnşa aracı
Lisans Apache Lisansı 2.0
Resmî sitesi http://ant.apache.org

Apache Ant, yazılım inşası süreçlerini otomatikleştirmeye yarayan bir araçtır. Make'e benzeyen uygulama, Java ile geliştirilmiş olup Java platformunu gerektirmekte ve Java projelerinde sıkça kullanılmaktadır.

Ant ve make arasındaki en belirgin fark, Ant'in inşa süreci ve bağımlılık tanımları için XML kullanmasıdır. Make ise kendine özgü dosya biçimi olan Makefile'ı kullanır. XML dosyasının öntanımlı adı build.xml'dir.

Bir Apache projesi olan Ant, açık kaynak kodlu bir yazılımdır. Ant, Apache Yazılım Lisansı'nı kullanmaktadır.

Tarihçe

Ant, James Duncan Davidson'ın bir Sun ürününü açık kaynak kodlu bir yazılıma dönüştürmeye çalışması sonucu ortaya çıkmıştır. Sun'ın deyimiyle JSP/Servlet motoru olan bu yazılım daha sonra Apache Tomcat olarak anılmaya başlamıştır. Make'in ticari sürümü kullanılarak Solaris işletim sistemi üzerinde hazırlanan yazılımın açık kaynak kodlu uyarlamasının hangi platform kullanılarak inşa edildiğini bulmak olanaksızdı. Bu nedenle Ant, bir XML "inşa dosyası"ndaki yönergeleri kullanarak Tomcat'i inşa etmek üzere kullanımı kolay bir arayüzle hazırlanmıştır. Bu sessiz başlangıcın ardından Ant zaman içinde gelişerek Tomcat dışındaki ürünlerin inşasına da izin vermeye başlamıştır. Ant'in 1.1 sürümü 19 Temmuz 2000 tarihinde bağımsız bir ürün olarak piyasaya sürülmüştür. Ant, bugün geliştirilen çoğu Java projesinde inşa aracı olarak kullanılmaktadır.[1] Çoğu açık kaynak geliştiricisinin build.xml dosyasını dağıtım paketinde bulunduruyor olması bu duruma iyi bir örnektir.

Ant'in JUnit denemelerini inşa sürecine tümleştirmede sağladığı kolaylıktan ötürü geliştiriciler kendilerini deneme tabanlı geliştirme ve uç programlamaya daha kısa sürede uyarlayabilmektedirler.

Java tabanlı diğer inşa araçları Maven ve JavaMake'tir.[2]

Ürünün adı İngilizce "Another Neat Tool" (Bir Başka Harika Araç) söz öbeğinin kısaltmasıdır.[3]

Örnek build.xml dosyası

Yalın bir "Merhaba Dünya" uygulaması için yaratılan örnek build.xml dosyası aşağıda gösterilmektedir. Dosya, her biri farklı bir tanıma sahip dört hedef barındırmaktadır. Bunlar; clean, clobber, compile ve jar olarak adlandırılmaktadırlar. Jar hedefi compile hedefini bir bağımlılık olarak nitelendirmektedir. Bu, Ant'in jar hedefine geçmeden önce compile hedefini tamamlaması gerektiğini belirtmektedir.

<?xml version="1.0"?>
<project name="Merhaba" default="compile">
    <target name="clean" description="geçici dosyaları sil">
        <delete dir="sınıflar"/>
    </target>
    <target name="clobber" depends="clean" description="tüm yapay dosyaları sil">
        <delete file="merhaba.jar"/>
    </target>
    <target name="compile" description="Java kaynak kodunu sınıf dosyalarına derle">
        <mkdir dir="sınıflar"/>
        <javac srcdir="." destdir="sınıflar"/>
    </target>
    <target name="jar" depends="compile" description="uygulama için bir jar dosyası oluştur">
        <jar destfile="merhaba.jar">
            <fileset dir="sınıflar" includes="**/*.class"/>
            <manifest>
                <attribute name="Ana-Sınıf" value="MerhabaProgramı"/>
            </manifest>
        </jar>
    </target>
</project>

Her hedef, Ant'in o hedefi tamamlaması için gereken eylemler içermektedir. Örneğin, compile hedefinin tamamlanabilmesi için Ant önce "sınıf" adında bir dizin yaratır (bu dizin daha önce yaratılmış değilse) ve daha sonra Java derleyicisini işletir. Bu hedef için kullanılan görevler mkdir ve javactır. Bu görevler, komut satırından çalıştırılan adaşlarına benzer işlevlere sahiptirler.

Bu örnekte kullanılan bir diğer görev ise jardır.

 <jar destfile="merhaba.jar">

Bu görev, Java komut satırı aracı JAR'la adaştır ancak yalnızca Ant programının varsayılan jar/zip dosya biçimi desteğine yapılan bir çağrıdır.

Birçok Ant görevi kendi işlerini dış programlara devretmektedirler. Bunlar, Ant'in <exec> ve <java> görevlerini kullanarak inşa dosyasından gerekli bilgileri çekmekte, dış programın alacağı parametreleri hesaplamakta ve bu programlardan dönen değerleri yorumlamaktadırlar.

Eklentiler

WOProject-Ant[4], Ant için yazılmış görev eklentilerinden yalnızca biridir. Bu eklentileri kullanmak için jar dosyalarını Ant'in lib dizinine kopyalamak gerekir. Böylece, bu görevler doğrudan build.xml dosyası içinde çağrılabilmektedirler. WOProject eklentileri WebObjects geliştiricilerinin Ant'i kendi uygulamalarını inşa etmek amacıyla kullanmalarına izin vermektedir.

Antcontrib[5], koşullu tümceler ve farklı veri türleri üzerinde işletilebilen görevlerden oluşan bir seçkidir.[5]

Perforce, .Net, EJB ve dosya sistemleriyle ilgili görev eklentileri de bulunmaktadır.[6]

Taşınabilirlik

Ant'in başlıca amaçlarından biri make'in taşınabilirlik sorunlarını çözüme kavuşturmaktı. Makefile dosyalarında bir hedef yaratmak için gerekli eylemler platforma bağımlı kabuk komutlarını içeriyordu. Ant, bu sorunu birçok platformda aynı ölçüde başarım gösterebilen uyarlamalara sahip olmasıyla çözmektedir.

Örneğin, yukarıdaki build.xml dosyasında clean hedefi, sınıflar dizinini ve bu dizin içerisindeki tüm dosyaları silmektedir. Özdeş bir hedefi Makefile'da tanımlamak için aşağıdaki komut kullanılmalıdır.

rm -rf siniflar/

rm, Unix'e özgü bir komuttur ve Unix dışındaki sistemlerde (örneğin Microsoft Windows'ta) çalışmayacaktır. Bu hedefi Ant'te yaratmak ise daha kolaydır.

 <delete dir="sınıflar"/>

Farklı platformlar arasındaki en büyük tutarsızlık dizin yollarının saklanma biçimidir. Unix, bir yolun bileşenlerini birbirinden ayırmak amacıyla düz slash (/) kullanırken Windows, aynı işlevi ters slash (\) ile görür. Ant inşa dosyaları, dizin ve yol ayraçlarını kullanıcının isteğine bırakmıştır. Kullanılan her ayraç, platforma uygun biçime dönüştürülmektedir.

Kısıtlamalar

Bu kısıtlamaların bir bölümü güncel Ant sürümleri için geçerli olmayabilir. Ayrıca, NetBeans IDE kendi inşa sisteminde Ant kullanmakta ve IDE bünyesindeki Ant kullanımını kolaylaştırmaktadır (NetBeans ile üretilen Ant betikleri IDE dışında kullanılabilmektedirler).

Ayrıca bakınız

Bibliyografya

Kaynakça

Dış bağlantılar

This article is issued from Vikipedi - version of the 2/15/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.