Yaptiginiz proje buyudukce kodlarin yonetimi bir tarafa projeyi saglikli bir sekilde son kullanici icin paketlemekte sorun haline gelebilir. Yeni dosyalarin paketlenmesi, versiyon bilgilerinin guncellenmesi, otomatik testlerin calistirilmasi, versiyona uygun zip dosyalarinin olusturulmasi gibi bu liste uzar gider. Bu islemleri tek tiklamaya indirmek icin cesitli programlar mevcuttur. FinalBuilder, MSBuild bu araclardan iki tanesidir sadece.
Biz bu yazida Ant turevi olan Want adli build aracini mincikliycaz.
Want, target ve propertylerden olusan bir xml belgesini isleyerek build islemini gerceklestirmeye calisir. Ant ile Wan’in calisma prensipleri nerdeyse ayni oldugu icin cok detayli olarak anlatmaya gerek yok. Yine de fikir edinmek isteyenler Ceviz.net teki Apache Ant adli makaleyi okuyabilirler.
Want ile bir deneme surusu yapmak icin ufak bir proje hazirladim. bu proje sadece iki TEdite girilen rakamlari toplayan ufak bir programcik. bu programcigin bir de Dunit ile hazirlanmis ufak bir test modulu var. Want bizim icin ilk once projenin bulundugu dizinde Build adli bir dizin olusturacak. Ardindan DUnit ile hazirlanmis olan Testleri calistiracak hemen akabinde ufak projemizi derleyecek, olusan exe yi Build dizinine kopyalayacak ve bunu bir zip dosyasinin icerisine yerlestirecek.
Proje dizini su sekilde.
Lib klasoru icerisinde UnitToplama.pas adli TToplama sinifinin yer aldigi bir dosyamiz var. Toplama islemi icin yeni bir sinif olusturmak ne kadar dogru birsey bu ayri bir tartisma meselesi olur. simdilik konu bu degil ![]()
DUnit icerisinde ise birim testlerimiz mevcut.
Build.bat dosyasinda ise Wanti calistiracak komut ve sonucu gormemiz icin bir pause komutu yer aliyor.
want
pause
Want.xml ise target ve propertylerin bulundugu xml dosyamiz.
satiri ile projemizin adini varsayilan calisma dizinini ve ilk once calistirilacak olan Targeti belirliyoruz. Burda ilk once calistirilmak istenen target aslinda en son calismasi gereken exe yi zip dosyasina yerlestirirecek olan target ama ilgili target in bagimliliklar bolumunde diger targetlari belirttigimiz icin Want ilk once bagimli olan paketleri calistirip en son bu paketi calistiracaktir.
burda gorundugu uzere ProjeyiPaketle targeti ProjeyiDerle targetina bagimlidir ve want ProjeyiPaketle den once ProjeyiDerle adli targeti calistiracaktir.
property ler ile xml dosyasinin icerisinde kullanilabilecek degiskenler tanimlanabilir.
bu target ile oncelikle Build dizinindeki tum dosyalar silinir.
ardindan bu target ile birim testleri calistirilir. burda sadece birim testleri derlenir ve calistirilir. yanlis calisan bir test oldugu zaman build islemi durmaz. normal de testlerde meydana gelen bir hatanin build islemini durdurmasi gerekir. biz birim testlerini execute yontemi ile calistirdigimizdan dolayi bunu saglayamadik. bu yontem yerine want in mevcut DUnitTask adli yontemini kullanmak gerekir.
Bu target ise projemizi delphinin komut satiri derleyici ile derler ve olusan exe yi Build dizinine tasir.
ve en son calisan target.
derleme sonucunda olusan exe yi zip dosyasi olarak sikistirir.
cikan sonuc..
F:\Developers\#DelphiSamples\Want>want
buildfile: /f:/Developers/#DelphiSamples/Want/want.xml
DizinleriTemizle:
[echo] /f:/Developers/#DelphiSamples/Want/Build dizini
[echo] temizleniyor…
[delete] 2 files from ./Build
UnitTestleriniCalistir:
[echo] Testler calistiriliyor…
[dcc] ./dunit/WantDenemeTests.dpr
[exec] WantDenemeTests.exe
[exec]
[exec] DUnit / Testing
[exec] ….
[exec] Time: 0:00:00.0
[exec]
[exec] OK: 1 tests
[exec]
[exec]
[exec]
ProjeyiDerle:
[echo] Proje Derleniyor…
[dcc] ./WantDeneme.dpr
[echo] Yeni surum /f:/Developers/#DelphiSamples/Want/Build dizinine
[echo] kopyalaniyor…
[move] to ./Build
[move] 1 files from .
ProjeyiPaketle:
[echo] Proje Paketleniyor…
[zip] ./Build/WantDeneme.zip
[zip] 1 files from ./Build
Build complete.
F:\Developers\#DelphiSamples\Want>pause
Press any key to continue . . .
bu gorevlerin yaninda Want in daha bircok ozelligi mevcut. CVS den guncel kodlari otomatik olarak cekebilir, loglama yapabilir, innosetup scriptlerini otomatik calistirabilir, ini dosyalarindan deger okuyup yazabilir vs vs. Want in en kotu yani ise yeterli dokumantasyonu olmamasi. kendi web sayfasinda dokuman icin ant in dokumanlarini kullanabilirsiniz deniyor ama ant ile want % 100 uyumlu olmadigi icin antin dokumanlarinda yazan bazi seyler want ta calismayabiliryor. Takildiginiz noktalarda ya want-0.3.3\src\tasks klasorunde ki kaynak kodlara bakacaksınız ya da news://news.optimax.com haber grubundaki want grubundan yardim talep edeceksiniz.
son bir not. Delphi nin gelecek surumleri MSBuild urunu ile birlikte gelecek.
iyi buildler…

Entries (RSS)
February 20th, 2007 at 10:11:35
Güzel yazı, teşekkürler
Ben de bunun daha basit bir versiyonunu hazırlamıştım kendi projelerim için. O da şu işleri yapıyordu: Dosyaları yedekle, yeni dosyaları kopyala, help dosyalarını kopyala, readme ve revision dosyalarını güncelle, innosetup scriptini güncelle ve scripti çalıştır. Tabi buna FTP özellikleri de eklemeyi düşünüyordum; ilgili web sayfalarını otomatik güncelleştirip siteye upload etme, ve programın setup dosyasını upload etme işlemleri için.