Apache Ant – 5) Veri tipleri

Ant, bizim için hazırda oluşturulmuş veri yapıları sağlar. Bu veri yapılarını programlama dilinin verdikleri ile karıştırmamak gerekir. Aksine ürün çıktıktan/yazıldıktan sonra kullanım için oluşturulmuş servisler gibi düşünmek daha mantıklı olacaktır.

Aşağıda listelenen veri tipleri Apache Ant tarafından önceden tanımlanmıştır.


Fileset

Fileset veri yapısı bir dizi dosyayı belirlemek için kullanılan bir veri yapısıdır. Bu veri yapısı daha çok dosyaların derleme işlemine tabii olacağını ya da hariç tutulacağını belirlemek için kullanılır. Bu belirlemeler için bazı desenler (patterns) kullanılır.

Örneğin, aşağıdaki örneğe bakarak değerlendirelim. Burada src özelliği projenin kodlarının bulunduğu klasörü gösterir.

Fileset veri yapısı içinde Stub geçen dosyalar hariç geriye kalan bütün .java uzantılı dosyaları seçmek için kullanılmıştır. Burada uygulanan filtre dosya isimlerinde büyük/küçük ayrımı yaparak (case-sensitive) çalışır. Yani projede Ornekstub.java dosyası varsa bu dosya derleme işleminde hariç tutulmayacaktır.

<fileset dir="${src}" casesensitive="yes">
   <include name="**/*.java"/>
   <exclude name="**/*Stub*"/>
</fileset>

Pattern Set

Pattern Set belirli parametrelere ve desenlere göre dosya ve klasörleri filtrelemek için kullanılan bir veri yapısıdır. Desenler aşağıda belirtilen karakterler kullanılarak oluşturulur.

  • ? – sadece bir karakterle eşleştirmek için kullanılır.
  • * – sıfır veya daha çok karakterle eşleştirmek için kullanılır
  • ** -sıfır veya daha fazla alt alta klasör ile eşleştirmek için kullanılır

Aşağıdaki örnek Pattern Set veri yapısının nasıl kullanıldığını göstermektedir.

 <patternset id="stub.olmadan.java.dosyalari">
   <include name="src/**/*.java"/>
   <exclude name="src/**/*Stub*"/>
</patternset>

Pattern set belirlendikten sonra fileset içinde belirteç olarak kullanılabilir.

<fileset dir="${src}" casesensitive="yes">
   <patternset refid="stub.olmadan.java.dosyalari"/>
</fileset>

File List

Filelist veri yapısı filset veriyapısına benzer bir yapıdır. Aralarındaki farklar aşağıda listelenmiştir.

  • filelist açık bir şekilde belirlenmiş dosya isimleri ile çalışır ve herhangi bir joker karakteri (*, ?) desteklemez.
  • filelist güncel olarak bulunan oluşturulmuş veya henüz oluşmamış dosyalar için kullanılabilir.

Şimdi filelist veri yapısı için bir örnek inceleyelim. Örneğimizde webapp.src.folder özelliği web uygulamasının kaynak kod klasörünü göstermektedir.

<filelist id="config.files" dir="${webapp.src.folder}">
   <file name="applicationConfig.xml"/>
   <file name="faces-config.xml"/>
   <file name="web.xml"/>
   <file name="portlet.xml"/>
</filelist>

Filter Set

Filterset veri yapısını kopyalama(copy) komutu ile beraber kullanırsanız, kopyalanan dosyaların içinde bununan belirli metni değiştirerek kopyalama işlemini yaparsınız. Örnek vermek gerekirse; uygulamanızın her versiyon dökümantasyonunu yapmak istiyorsunuz ve her seferinde version numarasını değiştirmek için dosya dosya çalışmanız gerekiyor. Bu çalışma şekli yerine sabit bir metin belirleyerek derleme işlemi sırasında o sabit metni istediğiniz değerle değiştirebilirsiniz. Örnek için aşağıdaki kodu inceleyelim.

<copy todir="${hedef.dir}">
   <fileset dir="${surum_notlari.dir}" includes="**/*.txt"/>
   <filterset>
      <filter token="VERSIYON" value="${guncel.versiyon}"/>
   </filterset>
</copy>

Bu örnekde;

  • hedef.dir derleme işlemi çalıştıktan sonra çıkacak dosyaların konumlandırılacağı klasör
  • surum_notları.dir derleme işlemi sonucunda sürüm notlarımızı çıkacağımız klasör
  • guncel.versiyon şu andaki güncel versiyona ait klasör
  • copy görevi ise kaynağı belirlenen klasörde bulunan dosyaları istenilen hedefe kopyalamak için kullanılır

Path

Path veri yapısı genel olarak class-path belirlemek için kullanılır. Girilen değerler noktalı virgül (;) veya virgül (,) karakteri ile birbirinden ayrılır. Bu karakterler çalışma anında çalıştırılan sistemin belirlediği karakterler ile otomatik olarak değiştirilir.

Class-path ise bir dosya kümesi olup, bu küme içinde proje kapsamında kullanılan .jar dosyaları ve .class dosyalarını belirlemek için kullanılır.

<path id="build.classpath.jar">
   <pathelement path="${env.J2EE_HOME}/${j2ee.jar}"/>
   <fileset dir="lib">
      <include name="**/*.jar"/>
   </fileset>
</path>

Bu örnekde;

  • env.J2EE_HOME özelliği J2EE_HOME  sistem ortam değişkenini gösterir.
  • j222.jar ise bu J2EE klasöründe bulunan j2ee.jar dosyasını göstermek için kullanışmıştır.