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.
Özellik | Tanımı |
basedir | Oluşturulacak Jar dosyasının çıkması beklenen hedef klasör olup, öntanımlı olarak projenin hedef ana klasörü ile aynıdır. |
compress | Jar dosyası oluşturulurken Ant’a bazı dosyaların sıkıştırılacağını belirtmek için kullanılır. |
keepcompression | Compress ö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. |
duplicate | Aynı dosyanın birden fazla bulunması durumunda ne yapılacağını belirlemek için kullanılır. |
excludes | Ant’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. |
exculudesfile | Bir önceki excludes ile aynı işe yarar. Tek farkı bu seçenekte dosyalar için birer desen ile belirtilir. |
includes | Excludes işleminin tersini yani derleme içinde bulunacak dosyaların belirlenme işlemi için kullanılır. |
includesfile | Exculudesfile işleminin tersi. |
update | Jar 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.