Apache Ant

Cansiz

New member
Bu başlık altında size proje geliştirirken kullanılan bir edevat olan Ant'ı tanıtacağım.

Ant Nedir?

Ant java-tabanlı olarak geliştirilmiş bir edevattır.Ant,proje geliştirmekte kullanılan "Make" diye bilinen bir başka edevatın çalıştığı amaç için üretilmiş fakat daha kolay ve az karmaşık,javanın taşınabilir bütün özelliklerine sahip,kendisi de javada yazılmış ,kendisini XML dokümanlarıyla programlamanıza ve kontrol etmenize olanak sağlayan bir edevattır.

Ant'ın anlamı
Ant'ın yaratıcısı James Duncan Davidson'a göre Ant "Another Neat Tool"'un (Tertipli Birbaşka Edevat)bir kısaltmasıdır.

Daha sonraları Ant için "Karıncalar inşaat faaliyetlerinde çok küçük ve çok çalışkan varlıklardır.","Karıncalar ufak vücutlarına rağmen kendi ağırlıklarının düzinelerce katı ağırlıkları taşıyabilirler." sözleri atfedilerek övülmüş ve tanıtılmıştır.

Ant,karınca gibi çalışkan,yorulmak bilmez bir edevat.

Ant'ın gelişim süreci​

Başlangıçta Ant, Apache'ye bahşedildiğinde(devredildi) Tomcat kod siteminin bir parçasıydı.Ant,Tomcat'in de yaratıcısı olan James Duncan Davidson tarafından yaratıldı.Ant ilk olarak Tomcat'i yaratmak için yapıldı ve kullanıldı.

Daha sonra bir çok Java projesinde kullanılabileceği fark edildi.Ant proje geliştirirken yaşanan problemleri çözebilirdi.Önce Jakarta kod adıyla bilinen projelerde kullanılmaya başlandı.Bundan sonra da bir virüs gibi yayıldı ve şu an bir çok projede kullanılan elzem bir edevat haline geldi.

Ocak 2000'de Ant, Tomcat'ten ayrıldı ve kendi projesi ile "Apache Ant" olarak var olmaya ve geliştirilmeye başlandı.

Neden Ant?​

Büyük bir java projesiyle uğraştığınızı düşünün.Elinizde bir sürü ".java" dosyası var ve üstüne üstlük farklı-farklı klasörlerin altındalar.Projeyi geliştirirken hep aynı rutin işlemleri yapıyorsundur.Kodları derle,manifest dosyası hazırla, jar'la, war dosyaları hazırla,sonrada tüm yaptıklarını alıp server'e deploy et.Ufak projeler için önemsenmeyebilir fakat büyük projeler için bütün bu işlemleri her değişiklik yapıldığında tekrar-tekrar yapmak bezginlik verebilir.

İşte Ant burada ortaya çıkıyor ve sizi rutin,sıkıcı işlemlerden ve hamallıktan kurtarıyor.

Ant ile başka bir bilgisayarda çalışarak remote bir servere ftp ile dosyalarınızı atabilir ve deploy edebilirsiniz.Hatta birbaşkasına mail ile gönderebilirsiniz.

Ant kurulumu​

Ant'ı jakarta.apache.org/ant adresine gidin,indirin.Ant'ı indirdiğinizde onu diskin bir yerine açın.(örn;C:\Ant)

çalıştırmak için autoexec.bat dosyasına yada kendi yazcağınız bir bat'a,

1-Ant'ın bin klasörünü path çevre değişkenine eklemek

2-Ant-Home çevre değişkenini set etmek

3-Java-Home çevre değişkenini set etmek

,gerekir

Örneğin setEnv.bat için;

set ANT_HOME=c:\Ant

set JAVA_HOME=C:\JDK-NetBeans\j2sdk1.4.2

set PATH=%PATH%;%ANT_HOME%\bin

olarak.

Ant ile çalışmak için bu bat dosyasının çalıştırılıp çevre değişkenleri set edilmiş olmalıdır.

Ant'ın çalıştığının Testi

Ant'ı çalıştırmak için komut satırından "ant" komutunu girmeniz yeterlidir.Ant'ı çalıştırmak için yukarıdaki bat dosyasını çalıştırın.Sonra komut satırından,

C:\ant

yazıp entere basın.

C:\ant

Buildfile: build.xml does not exist!Build failed

C:\>

mesajı çıkacaktır.

Bu sizin Ant'ı kurduğunuz,çalıştırdığınız fakat build.xml dosyasını bulamadığını gösterir.Yani Ant çalışıyordur.Geriye Ant'ın kullanacağı build.xml'i hazırlamak kaldı.

build.xml dosyası

Ant bu dosya ile kontrol edilir ve programlanır.Dosya bir xml dosyasıdır.

xml dokümanı root element olarak <project> elementi kullanılır.

Örnek bir build xml dosyası;

<?xml version="1.0"?>

<project name="test" basedir="." default="compile">

<property name="home" value="${basedir}"/>

<property name="classdir" value="${home}/classes"/>

<property name="sourcedir" value="${home}/src"/>

<target name="compile">

<mkdir dir="${classdir}"/>

<javac srcdir="${sourcedir}" destdir="${classdir}"/>

<echo message="Bitti.."/>

</target>

</project>

project elementi name,basedir,default olarak üç attribute alır.default attributesi kullanımı zorunludur.Diğerleri zorunlu değildir.name: projenin ismini belirtir.basedir: projenin base directory'sidir.default:Ant xml dosyası ele alındığında default olarak bir target'e yöneltilmelidir.

Bir proje Property ve Targetlerden oluşan bir yapıdır.

Property

Property xml dokümanında Ant'ın kullanacağı sabit değerlerdir.Tanımlanacak bir sabit, <propety> elementiyle oluşturulur.yukarıdaki örnek build.xml'de,

<property name="sourcedir" value="${home}/src"/>

olarak kulanılan bir property görüyorsunuz.

Mesela C:\AntDeneme altında test yapıyoruz diyelim.Yukarıdaki elementle orada var olan veya yaratılacak olan src klasörünü temsil eden değişkeni tanımladık.Bir property kullanılırken ${property_name} kalıbıyla kullanılır.

Target

Target'ler de Task'lardan oluşan elementlerdir.

Target'ler gerçek hayattakiyle ilişkilendirilmek istenirse,mesela amacınız;"mesai bitimi eve gidip uyumak" olursa,

uyuma işlemi sizin hedefinizdir.Fakat bu hedefe ulaşmadan önce;

* işyeri merdivenlerinden inmeli

* Otobüs durağına yürümeli

* Doğru otobüse binmeli

* Doğru durakta inmeli

* Eve yürümeli

* Yatağa uzanmalı

* ve uyumalıdır.

hedefiniz uyumak olduğu halde aradaki işlemleri yapmadan diğerini yapamazsınız.Yani bir sonraki işlem diğerine "bağımlıdır".İşte hedefe gitmek için tüm bu işlemlerin herbirine Task denir.Targetler Task'lardan oluşurlar.Targetler "depends" attributesi ile beirtilerek birbirine bağımlı hale getirilir ve işlenir.


Mesela bir dosya derlenecek bir klasöre konacak ve jar yapılacaksa bütün bunlar sırasıyla yapılmak zorundadır ve bir sonraki işlem diğerine bağımlıdır.Hedef bir classı jarlamak ise önce class derlenmeli klasöre konmalı ve jarlanmalıdır.

Ant Taskları

<javac> bir klasörde duran class (veya classları)derlemek için kullanılır.

<java> bir classı çalıştırır.

<mkdir> bir klasör yaratmak için kullanılır.

<delete> klasör veya dosyaları siler.

<copy> bir dosyayı veya klasörü biryerden başka yere kopyalar.

<move> bir dosyayı veya klasörü biryerden başka yere taşır.

<jar> jar,war,ear dosyaları hazırlar.

<ftp> Bir dosyayı ftp yaparak başka bilgisayara atar.Dosyalarınızı uzaktaki makinada duran servere atmak için kullanılabilir.

<echo>Kullanıcıya bilgi vermek için kullanılır.

Ant'ta kullanılan birçok task vardır.Nasıl kullanıldıklarını Ant Manuel'den bakarak öğrenebilirsiniz.Ayrıntılı bilgi ve örnek mevcuttur.

Ant ile Web Applikasyonu yaratmak ve server'a deploy etmek

Şimdi Ant ile bir war dosyası nasıl yaratılır ve deploy edilir görelim.Bunun için war dosyaları nedir,yapısı nasıl olmalıdır bir bilgi verelim.

bir klasör war dosyası haline getirelecek ve Web applikasyonu olarak çalıştırılacaksa war dosyası J2EE spesifikasyonuna göre şöyle bir yapıya sahip olmalıdır;

$root

|_*.jsp

|

|_WEB-INF

|_classes

| |_*.class

|

|_lib

| |_*.jar

|_web.xml

J2EE spesifikasyonu "war dosyalarını bu yapıya göre hazırlarsanız başarıyla herhangi bir application serverda deploy edilip, çalıştırılacaktır" der.

Örneğimizde war dosyasının klasör yapısını oluşturup,TestServlet adında bir servlet'i derleyecek,war dosyasına koyacağız ve servere deploy edeceğiz.Bunların hepsini Ant'a yaptıracağız.

C:AntTest klasörümüzün yapısı ise şöyle olsun,

C:AntTest

|_src

| |_TestServlet.java

|

|_lib

| |_servlet.jar

|

|_web.xml

|

|_build.xml

TestServlet classımız;

import java.io.*;

import javax.servlet.http.*;

import javax.servlet.ServletException;

public class TestServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws IOException, ServletException {

response.setContentType("text/html");

PrintWriter writer = response.getWriter();

writer.println("<h1>Selam-ün Aleyküm</h1>");

writer.println("<h1>Beni TestServletten gönderdiler abi...</h1>");

}

}

Bu kodları TestServlet.java olarak C:\AntTest\src gibi bir yere koyun.

web.xml'imiz şöyle olacak;

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"

"http://java.sun.com/j2ee/dtds/web-app_2_3.dtd">

<web-app>

<servlet>

<servlet-class>TestServlet</servlet-class>

<servlet-name>Test Servlet</servlet-name>

</servlet>

<servlet-mapping>

<servlet-name>Test Servlet</servlet-name>

<url-pattern>/testing</url-pattern>

</servlet-mapping>

</web-app>

Bu dosyayı ise C:\AntTest altında dosya yaratıp koyun.

Şimdi Ant'ın kullanacağı build.xml'e geçelim.

İşte JBoss'a Web applikasyonumuzu deploy eden build.xml'imiz;

<?xml version="1.0"?>

<project name="test" basedir="." default="deploy">

<property name="wardir" value="${basedir}/example"/>

<property name="deploydir" value="C:/Jboss/server/default/deploy"/>

<target name="makedirs">

<mkdir dir="${wardir}"/>

<mkdir dir="${wardir}/WEB-INF"/>

<mkdir dir="${wardir}/WEB-INF/classes"/>

<mkdir dir="${wardir}/WEB-INF/lib"/>

</target>

<target name="compile" depends="makedirs">

<javac classpath="${basedir}/lib/servlet.jar" srcdir="${basedir}/src" destdir="${wardir}/WEB-INF/classes" debug="true" includes="**/*.java"/>

</target>

<target name="war" depends="compile">

<move file="${basedir}/web.xml" todir="${wardir}/WEB-INF"/>

<jar jarfile="${basedir}/example.war" basedir="${wardir}"/>

</target>

<target name="deploy" depends="war">

<delete file="${deploydir}/example.war"/>

<copy file="${basedir}/example.war" todir="${deploydir}"/>

</target>

</project>

Bu dosya C:\AntTest altında dursun.

Şimdi Ant'ı çalıştırın.Consoldan build.xml'in olduğu klasöre gelin(C:\AntTest).

C:\AntTest\ant

deyin.Build başlıyacaktır.

JBoss'u çalıştırın ve localhost:8080/example/testing ile browserden isteyin

Şöyle gelmesi lazım;

 

Cansiz

New member
FéRvénTßQY' Alıntı:
gerçekten güzel paylaşımlar... devamını isteris ama:p
Dahası da war arşivi açtım bir açtım pir açtım :D:D
 

HTML

Üst