Apache Ant – 8) Jar oluşturmak

Proje derlendikten sonra ilk akla gelen bu sınıf dosyalarının nasıl tertipli bir hale getirileceği oluyor. Bu işlem için eğer uygulamamız standalone (konsol/windows ) ise java bize jar dosyaları oluşturulması yönünde bir tavsiye veriyor.

Ant ile jar dosyaları oluşturmak oldukça kolay bir işlemdir ve jar görevi kullanılarak yapılır. Jar görevine ait olan ve sıklıkla kullanılan özellikleri aşağıda tablo olarak bulabilirsiniz.

ÖzellikTanımı
basedirOluşturulacak Jar dosyasının çıkması beklenen hedef klasör olup, öntanımlı olarak projenin hedef ana klasörü ile aynıdır.
compressJar dosyası oluşturulurken Ant’a bazı dosyaların sıkıştırılacağını belirtmek için kullanılır.
keepcompressionCompress özelliği tek tek dosyalara uygulanırken, bu özellik bütün dosyaların sıkıştırılması için kullanılır.
destfileÇıkacak dosyanın adının belirtilmesi için kullanılır.
duplicateAynı dosyanın birden fazla bulunması durumunda ne yapılacağını belirlemek için kullanılır.
excludesAnt’a derleme işlemi yapılırken hariç tutulacak dosyaların listesini vermek için kullanılır. Virgül kullanılarak dosyalar birbirinden ayrılır.
exculudesfileBir önceki excludes ile aynı işe yarar. Tek farkı bu seçenekte dosyalar için birer desen ile belirtilir.
includesExcludes işleminin tersini yani derleme içinde bulunacak dosyaların belirlenme işlemi için kullanılır.
includesfileExculudesfile işleminin tersi.
updateJar dosyasının içinde zaten bulunan dosyalar eklenecekse onları ezmek için belirtilir.

Merhaba Dünya projemizin üzerinden devam ederek jar dosyası çıkarmak üzere bir geliştirme yapalım. Bu işlemi yapmadan önce aşağıdaki jar görevini inceleyelim.

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

web.dir özelliği web dosyalarının bulunduğu klasörü gösterir. Bizim örneğimizde jar yapma işlemi çalıştırıldığında çıkacak dosyanın bulunacağı yeri göstermektedir.

derle.dir özellği ise jar oluşturmak için kullanılacak olan .class dosyalarının nerede bulunacağını göstermektedir.

Bu örneğimizde bir util.jar adında bir dosya oluşturacağız ve bu dosya app.util altında bulunan dosyalar ve bu dosyalarda Test.class varsa kapsam dışında bırakılarak bir jar dosyası oluşturulacaktır.

Eğer oluşturduğumuz jar dosyasının çalıştırılabilir bir dosya olmasını istiyorsak, java bize manifest tanımlama zorunluluğu veriyor. Bu işlemi Ant içinden yapabiliriz. Manifest tanımlamak için main-class meta özelliğini kullanacağız.

Bu işlem için yukarıda verdiğimiz örnek üzerinden bir değişiklik yapacağız.

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

Bu jar işlevini çalıştırmak için işlevi olduğu gibi bir hedef(target) işleviyle sarmalamamız gerekir.

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

Ant jar-derle şeklinde kodumuzu çalıştırabiliriz.