Skip to content
Menu
Kenan Erarslan
  • Hasscript
    • BİNlerce cevap
    • Hello world!
    • Hasscript motivasyonumuz
    • 60 soruyu geçtik
    • 50 Üye / 90 soru / 100 cevap.
    • 200 soru
    • 365 gün geride kaldı.
    • 2019’un Hasscript’i
  • Experience
    • How to select Right Programming Language For Next Project
    • BigData Study
      • Hadoop Learning Journey / 1 / What is Hadoop
      • Hadoop Study Part 2 – Meaningless Fight
      • Hadoop Learning Journey / 3 / Reinventing The Wheel
  • Türkçe
    • Apache Ant
      • Apache Ant – 1) Kurulum
      • Apache Ant – 2) Dosyaları derlemek
      • Apache Ant – 3) Özellik işleri (property tasks)
      • Apache Ant – 4) Özellik dosyaları
      • Apache Ant – 5) Veri tipleri
      • Apache Ant – 6) Proje derlemek
      • Apache Ant – 7) Döküman derlemek
      • Apache Ant – 8) Jar oluşturmak
    • Duygu / Düşünce
      • Ben bu işin neresindeyim?
      • Enkazlar ülkesi
      • Hayal kurmak güzeldir.
      • Arch Linux ile tanışmak ve zorluklar
Kenan Erarslan

Apache Ant – 5) Veri tipleri

Posted on January 23, 2017April 17, 2020

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.

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

4 × one =

March 2021
M T W T F S S
1234567
891011121314
15161718192021
22232425262728
293031  
« Feb    

RSS Hasscript.com | Programlama hakkında – Yeni soru ve cevaplar

  • npm proxy ayarlarını temizlemek nasıl yapılır?
  • Spring Security üzerinde bazı methodlara token olmadan nasıl erişebilirim?
  • Cevaplandı: Bir değerim var, sınıf tanımlamak istemiyorum. Nasıl tanımlayabilirim?
  • Spring security şifresiz login nasıl olabilirim?
  • Spring boot projesinde methodları rol bazlı nasıl ayırabilirim?
  • Cevaplandı: "No converter found capable of converting from type" hatası alıyorum, neden?
  • Cevaplandı: Spring data jpa için limit nasıl tanımlarım?
  • Cevaplandı: Java'da para değerlerini ne tarz değişkende tutmak mantıklıdır?
  • "There is no PasswordEncoder mapped for the id " hatası nasıl çözülür?
  • Cevaplandı: vuetify ile validasyonda 0 sorunu
©2021 Kenan Erarslan | WordPress Theme by Superbthemes.com