Okuyucular, Java ve Ant deneyimine sahip geliştiriciler olarak konumlandırılır.
Okuyucular, bazı çok kullanıcılı geliştirme ortamlarını çözmek için Ant'ı nasıl kullanacaklarını öğrenebilir, farklı hedef ortamlara göre farklı dağıtım paketlerinde derleyebilir.
İş sahnesi
Şimdi birden fazla kişi tarafından geliştirilen ve CVS tarafından yönetilen bir web projesi var. Ek olarak, projede test sunucusunda konuşlandırılan uygulamaları test eden ve hataları bulduklarında geliştiricilere hata yönetimi sistemi aracılığıyla bildirimde bulunan bazı testçiler vardır.Geliştiriciler hataları düzelttikten ve yerel testlerden geçtikten sonra, kontrol etmekle görevli bir kişi sorumludur ( kontrol edin) kod derlenir ve paketlenir ve ardından test sunucusuna dağıtılır.
Projenin bir üyesi, kodu kontrol etmek, derlemek, paketlemek ve sunucuya dağıtmaktan sorumlu kişidir. Bu göreve ek olarak, aynı zamanda projenin programcısıdır. Proje test aşamasına girdikten sonra, grubun diğer üyelerinin hatayı düzelttiğine ve kodu kontrol ettiğine dair bir mesaj aldıktan sonra (A'nın kodu kendisi kontrol etmiş olması da mümkündür), A önce yerel Kod yerel olarak test edilmelidir.Hatanın düzeltildiğini onayladıktan sonra, bir WAR paketi olarak işaretlenir ve test sunucusuna dağıtılır ve test cihazına hatanın giderildiği bildirilir, böylece teste devam edebilir.
Küçük A'nın sorunları
Bu projede, kullanıcı kimlik doğrulamasını atlamak gibi testlerin geliştirilmesini kolaylaştırmak için yazılmış bazı kodlar ve sayfalar vardır, ancak bu kodların ve sayfaların test makinesi ortamına dağıtıldığında silinmesi gerekir; ayrıca esnek ve genişletilebilir olarak Uygulama programı bazı yapılandırma dosyalarına sahiptir ve yapılandırma dosyasındaki değerler ortam değişikliğine göre değişecektir. Örneğin, Log4j projede günlükleri kaydetmek için kullanılıyorsa, Log4j için günlük dosyasının depolama yolunu belirtmek gerekir.Yerel programcılar geliştirme sırasında Windows sistemini kullanır ve Log4j için belirtilen dosya sistemi de Windows dosya sistemidir.Test aşamasında ihtiyacınız olan Bir Linux sistemine dağıtın, ardından günlük kaydetme yolunun da buna göre değiştirilmesi gerekir. Test sunucusuna dağıtılırken, Log4j'ye ek olarak, değiştirilmesi gereken birçok başka yapılandırma öğesi vardır ve bunlar çeşitli paketlere dağılmıştır. Little A'nın sorunları da takip ediyor: Lokal testi her bitirdiğinde, konfigürasyon dosyalarını test makinesinin ihtiyaçlarına göre tek tek bulur, ilgili değerleri değiştirir ve test için uygun olan kodları ve sayfaları siler. Gerektiği kadar birkaç kez bunun gibi bir şey yapın. En can sıkıcı şey, test makinesi ortamında değişiklik yapmak üzereyken, belirli bir geliştiricinin birdenbire Xiao A'yı bilgilendirmesi ve şöyle demesi: "Küçük bir kodu tekrar değiştirdim. Sadece kontrol ettim. Bir paket oluşturun. Little A, baştan itibaren yeni bir kod kontrolü, yerel test, yapılandırma dosyası değişikliği, gereksiz dosyaların silinmesi ve paket dağıtımı yapmak zorunda. Ayrıca Xiao A, test aşamasının sonraki aşamasında test ortamında bir WAR paketi oluşturmanın yanı sıra, üretim ortamında bir WAR paketi oluşturması gerektiği konusunda bilgilendirildi.
Yukarıdaki senaryodan da görülebileceği gibi, Little A'nın iş verimliliği düşüktür ve hataya açıktır ve hatta tüm projenin düşük iş verimliliğine yol açabilir. Aslında Ant, Xiao A'nın bu işi hızlı ve etkili bir şekilde tamamlamasına yardımcı olmak için kullanılabilir. Ant'ta, hedef ortamın ihtiyaçlarına göre, değiştirilecek konfigürasyon dosyasının tüm öğelerini bir konfigürasyon dosyasına yazabilirsiniz. Bu şekilde, farklı hedef ortamlara göre farklı konfigürasyon dosyaları elde edilir ve Ant, paketi derlerken farklı hedef ortamlara göre farklı konfigürasyon dosyalarını değiştirebilir. Örneğin, Xiao A şu anda üç ortamla karşılaşır: geliştirme ortamı, test ortamı ve ürün ortamı Bu üç ortama göre, Xiao A olduğunda geliştirme_deploy.property, test_deploy. Özelliği ve ürün_ dağıtımı özelliği olmak üzere üç farklı yapılandırma dosyası oluşturulabilir. Farklı bir paket oluşturmak istediğinizde, yalnızca bu üç yapılandırma dosyası arasında geçiş yapmanız gerekir.
Resmen betik yazmaya başlamadan önce, ilgili yazılımı indirip yüklememiz gerekiyor.
Ant komut dosyaları oluşturmak için Eclipse 3.1'i kullanın
Ant yazmak için Eclipse kullanıyorsanız, Eclipse 3.1 veya üzerini kullanmanız önerilir. Önceki Ant editörü tarafından sağlanan sözdizimi vurgulama ve komut dizimi hatalarına ek olarak, Eclipse 3.1 sürümü birçok yeni özellik ekler. Örneğin: komut dosyası kodunun katlanması; belirli bir özniteliğin veya hedef (hedef) bölümün tanımını hızlı bir şekilde bulun; öznitelik adını ve hedef adını aynı oluşturucu dosyasında yeniden oluşturun (Alt + Shift + R kısayolu); Ant betiklerinde hata ayıklayın, vb.
Eclipse 3.1'de Ant için desteğe bir göz atalım
Bu, Eclipse Ant düzenleyicisi tarafından sağlanan güçlü işlevleri kullanırsanız, Ant komut dosyası yazma verimliliğini büyük ölçüde artırabileceğinizi gösterir.
Ant'ta özellik dosyalarını kullanma
Ant'ı yazmaya yeni başlayanlar tüm bilgileri build.xml dosyasına koyabilirler İşte bunun bir örneği.
< proje adı = "testBuild" default = "derleme" basedir = "." > < hedef adı = "init" > < mkdir dir = "c: / temp / dest / testProj" / > < /hedef > < hedef isim = "derleme" bağlıdır = "init" > < javac srcdir = "c: / temp / src / testProj" destdir = "c: / temp / dest / testProj" / > < Eko > Başarıyla c: / temp / dest / testProj'a derleyin. < /Eko > < /hedef > < / proje >Yukarıdaki örnekte, tüm yol bilgileri build.xml'de yazılmıştır. Ancak Ant betikleri farklı makinelerde veya farklı sistemlerde çalışabilir ve bazı değerlerin farklı ortamlara göre değiştirilmesi gerekebilir.Ant'ta tüm bu olası değişiklikler bir yapılandırma dosyasına ve ardından Ant betiğine yerleştirilebilir. Yukarıdaki örnekte bu konfigürasyon dosyasına aşağıda gösterildiği gibi başvurmak yeterlidir:
< proje adı = "testBuild" default = "derleme" basedir = "." > < property file = "build.properties" / > < hedef adı = "init" > < mkdir dir = "$ {dest.dir}" / > < /hedef > < hedef isim = "derleme" bağlıdır = "init" > < javac srcdir = "$ {src.dir}" destdir = "$ {dest.dir}" / > < Eko > $ {Dest.dir} içine başarıyla derleyin. < /Eko > < /hedef > < / proje > Build.properties dosyasının içeriği: dest.dir = c: / temp / dest / testProj src.dir = c: / temp / src / testProjBir Ant betiğinde bir değeri alıntılamak istiyorsanız, $ simgesiyle başlayın ve bir çift "{}" içinde alıntılanacak anahtar değerini yazın. Yukarıdaki örnekte olduğu gibi, derlenen hedef yola başvurmak için "$ {dest.dir}" kullanılması gerekir.
CVS'den kaynak kodunu kontrol etmek (teslim almak), derlemek ve paketlemek için Ant görevlerini kullanın
Ant, CVS sunucusundan kaynakları kontrol etmek için cvs görevini (Görev) sağlar (Not: Ant'ın cvs görevini kullanmadan önce, lütfen makinenize cvs.exe dosyasını indirin ve yerel PATH ortamınıza ekleyin. Değişken'i seçin ve Eclipse'i yeniden başlatın. Aksi takdirde, aşağıdaki komut dosyasını çalıştırırken = 2 hatası alırsınız). CV'lerin birçok isteğe bağlı özniteliği vardır, burada sık kullanılan birkaç öznitelik vardır. CVS'deki kaynakları kontrol etmek genellikle şunları belirtmeyi gerektirir:
Ant kullanarak cv'leri tanıtmadan önce yerel dizin yapısından bahsedelim. C sürücüsünün geçici dizininde aşağıda gösterildiği gibi dört dizin vardır:
Kaynaklara göz atmak için bunu Ant'a yazın:
< cvs cvsRoot = ": pserver: kullanıcı adı: pwd@cvs.server: / home / testPath" package = "TestProj" dest = "c: / temp / src / testProj" failonerror = "true" / >Bu komut dosyası parçasının anlamı, / home / testPath kütüphane yolu altındaki TestProj modülünü (proje), kullanıcı adı kullanıcı adı olan ve şifresi "cvs.server" adlı sunucudan pwd olan bir kullanıcı ile kontrol etmektir. Kaynaklar, c: / temp / src / testProj yerel dizinine yerleştirilir. Yukarıdaki komut dosyasında, kullanıcı adları ve şifreler gibi farklı ortamlara veya kullanıcılara göre değişebilen birçok değer olduğunu ve betiğin yeniden kullanılabilirliğinden bazı değerlerin çıkarılıp yerleştirilmesi gerektiğini görebilirsiniz. Sunucu adresi ve kitaplık yolu gibi yapılandırma dosyasına. Bu nedenle, değiştirilmesi gerekebilecek bu yerlerin özellik dosyasına konulması daha iyi sonuçlar verecektir. Değişiklikten sonra tam Ant betiği aşağıdaki gibidir:
< ? xml version = "1.0"? > < proje adı = "testWeb" default = "kullanıma alma" basedir = "." > < hedef adı = "ödeme" > < property file = "TestWeb.properties" / > < cvs cvsRoot = "$ {cvs.root}" paket = "$ {cvs.projectName}" tag = "$ {cvs.tag}" dest = "$ {src.dir}" failonerror = "doğru" / > < /hedef > < / proje >Karşılık gelen TestWeb.properties dosyasının içeriği aşağıdaki gibidir:
base.dir = c: / temp / src.dir = $ {base.dir} / src cvs.server = cvs.server cvs.user = kullanıcı adı cvs.pw = pwd cvs.repositoryPath = / home / testPath cvs.projectName = TestProj cvs.root =: pserver: $ {cvs.user}: $ {cvs.pw} @ $ {cvs.server}: $ {cvs.repositoryPath} cvs.tag =Kaynak kontrol edildikten sonra derlenmesi ve paketlenmesi gerekir. Ant betiğini daha okunabilir ve esnek hale getirmek için yukarıdaki Ant betiğinde bazı değişiklikler yapmamız gerekiyor. İlk olarak Ant komut dosyasını aşağıdaki gibi bölümlere ayırın:
< ? xml version = "1.0"? > < proje adı = "testWeb" default = "tümü" basedir = "." > < hedef adı = "tümü" bağlıdır = "init, clean, checkout, build" > < ! - Komut dosyasının giriş noktası - > < /hedef > < hedef adı = "init" > < ! - İlk özellikler dosyasını oluşturun ve başlangıç koşullarını ayarlamak için sınıf yolunu ayarlayın - > < /hedef > < hedef adı = "temiz" > < ! - En son kalan gereksiz dizinleri ve dosyaları silin - > < /hedef > < hedef adı = "ödeme" > < ! - CVS'deki kaynakları inceleyin - > < /hedef > < target name = "build" > < ! - Kaynak dosyayı derleyin ve belirtilen dizine paketleyin - > < /hedef > < / proje >Yukarıdaki komut dosyasında toplam 5 hedef (hedef) vardır, komut dosyasının giriş noktası "all", tüm çağrılar init, clean, checkout, build sırayla. onların arasında:
Ayrıntılı Ant komut dosyası, bu makaleye ekli TestWeb.xml ve TestWeb.properties'de bulunabilir.
Derleme işlemi, farklı hedef ortamları oluşturan betiklerden ayrı olarak yürütülür.
Yukarıda tanıtılan Ant betiğinde, CVS sunucusundan alınan kaynaklara göre varsayılan bir savaş paketi oluşturulur ve farklı hedef ortamlara göre farklı paketler üretilmesi düşünülmez.Bir sonraki bölümden, farklı hedef ortamlara göre farklı paketlerin nasıl üretileceğini tanıtacağız. Farklı dağıtım paketleri oluşturmak için ortam.
Diğer bir soru da şu: Hedef ortama göre kaynakların kontrol edilmesi ve CVS'den derlenmesi sürecini paketleme sürecinden neden ayırmamız gerekiyor?
Bunun nedeni, CVS'nin kaynakları kontrol etmek için belirli bir süre almasıdır.Daha fazla kaynak varsa, bu işlem uzun zaman alacaktır; ayrıca, çok kişili geliştirme durumunda, farklı dağıtım paketleri oluştururken kullanıldığından emin olmalısınız. Aynı kod seti tarafından üretilir, aksi takdirde her sunucuda çalışan sürümlerde tutarsızlıklar olacaktır.Bu sorun, kaynakları kontrol etme ve derleme süreci, paketi oluşturan komut dosyasıyla birlikte yürütülürse ortaya çıkar (örneğin, Xiao A test sunucusunun testini geçtiğinde) Bundan sonra, üretim ortamında bir dağıtım paketi oluşturun. Kaynaklar CVS sunucusundan iki kez teslim alınırsa, bu süre boyunca CVS sunucusuna kod ekleyen geliştiriciler olabilir ve bu da tutarsız üretilmiş sürümlere neden olabilir), bu nedenle , Bu iki işlem ayrı ayrı yürütülmelidir. Şimdi, özellikle paketleri oluşturmak için kullanılan deploy.xml adında başka bir Ant komut dosyası oluşturmaya başladık; ayrıca, deploy.xml'ye karşılık gelen bir deploy.properties dosyası da var. Deploy.properties dosyasına, deploy.xml'de başvurulacaktır. Ek olarak, önceki sahnede karşılaşılan ortama göre, üç farklı özellik dosyası oluşturun, development_deploy.property, test_deploy. Property ve product_deploy. Property.Farklı hedef ortamlara göre paketleme yaparken, ilgili özellik dosyalarının içerikleri Bunu deploy.properties dosyasına kopyalayın (veya doğrudan deploy.xml'de farklı bir özellik dosyasına geçebilirsiniz) ve ardından deploy.xml'yi doğrudan Eclipse'de çalıştırın; komut satırındaysanız, yürütmek için aşağıdaki komutu kullanabilirsiniz:
ant - f deploy.xmlSAVAŞ paketini açın
Önce sıkıştırılmış dosyaları saklamak için bir dizin oluşturmalıyız (burada, paketi açmalıyız). Ant, ear / war / jar paketini açmak için unzip komutunu sağlar. Bu dizine ek olarak, farklı hedef ortamlara göre, çalışan dizinde hedef ortama karşılık gelen bir dizin oluşturun ve yeniden yapılan savaş paketini bu dizine yerleştirin.Örneğin senaryolar için, bir ürün oluşturmanız gerekiyorsa Ortam altındaki dağıtım paketi için bir TestWebProduct dizini oluşturabiliriz, dizin adı yapılandırma dosyasına ($ {pack.base.dir}) yazılır.
< hedef adı = "init" > < Eko > konuşlandırmada init < /Eko > < property file = "deploy.properties" / > < sil dir = "$ {unpack.base.dir}" failonerror = "yanlış" / > < sil dir = "$ {pack.base.dir}" failonerror = "yanlış" / > < mkdir dir = "$ {unpack.base.dir}" / > < mkdir dir = "$ {pack.base.dir}" / > < /hedef > < hedef adı = "paketi aç" > < Eko > $ {war.name} paketini açın < /Eko > < dosya kopyala = "$ {dest.dir} / $ {war.name}" todir = "$ {unpack.base.dir}" / > < unzip src = "$ {unpack.base.dir} / $ {war.name}" dest = "$ {unpack.base.dir} / $ {projeAdı}" / > < dosya sil = "$ {unpack.base.dir} / $ {war.name}" / > < /hedef >İnit bölümünde, önce sıkıştırılmış son dizini ve hedef paketleme dizinini silin ve ardından dizini yeniden oluşturun; paketten çıkarırken, önce derlenmiş varsayılan savaş paketini paketten çıkararak tanımlanan dizine kopyalayın ve sıkıştırmayı açtıktan sonra paketin altındaki savaş paketini silin . Şu anda karşılık gelen özellik dosyası aşağıdadır.
projectName = MTSWeb war.name = MTSWeb.war # Kök dizini base.dir = c: / temp # Varsayılan savaş paketinin bulunduğu dizin dest.dir = $ {base.dir} / dist # Sıkıştırılmış dizin unpack.base.dir = $ {base.dir} / unpack # Hedef ortama karşılık gelen dizin pack.base.dir = $ {base.dir} / TestWebProductÖznitelik değerlerini değiştirmek için Ant tarafından sağlanan filtre görevini kullanın
Artık farklı ortamların ihtiyaçlarına göre bazı yapılandırma dosyası değerleri değiştirilir. Ant'ta, değerlerin değiştirilmesini kolaylaştırmak için filtre görevi sağlanmıştır. Elbette, öznitelik değerini değiştirmek için aşağıda açıklanan normal ifadeyi de kullanabilirsiniz. Filtre, esas olarak aynı içerik satırını değiştirmek için kullanılır ve normal ifadeler aynı anda birden fazla içerik satırının yerini alabilir. Filtre kullanımına örnekler:
< filtre belirteci = "log4j.logger" value = "BİLGİ" / > < todir kopyala = "$ {dest.dir}" filtreleme = "doğru" > < fileset dir = "$ {src.dir}" / > < / copy >Bu komut dosyasının anlamı, src.dir dizinindeki tüm dosyalarda, önceden tanımlanmış bir "@ log4j.logger @" yer tutucusu varsa, dest.dir dizinine kopyalandıktan sonra tüm yer tutucular "BİLGİ" ile değiştirildi.
Değiştirilen tüm değerleri bir özellik dosyasına da koyabilirsiniz ve filtre görevi, özellik dosyasındaki her girişi okur ve bunu bir Filtre olarak ayarlar. Aşağıdaki gibi:
< filter filtersfile = "deploy_env.properties" / > < todir kopyala = "$ {dest.dir}" filtreleme = "doğru" > < fileset dir = "$ {src.dir}" / > < / copy >Yukarıdaki komut dosyası, deploy_env'de görünen tüm girişlerin filtre olarak kullanılacağını belirtir. Dest.dir dizinine kopyalandıktan sonra, src.dir dizinindeki tüm yer tutucular deploy_env'deki değerlerle değiştirilecektir. Bu makaleye ekli deploy.xml, deploy_env.properties ve Test.properties dosyasında özel örnekler bulunabilir.
Deploy.xml, karınca betiğidir, deploy_env.properties, değiştirilecek tüm değerleri içerir ve Test.properties, yer tutucuları içeren kaynak dosyasıdır.
Özellik değerlerini değiştirmek için normal ifadeler kullanın
Ant, çeşitli normal ifadeleri destekler. Ant çalıştırılırken hangi normal ifade, ant.regexp.regexpimpl değeri ayarlanarak değiştirilebilir. Ant tarafından desteklenen normal ifadeler şunlardır:
JDK 1.4'ün java.util.regex paketi jakarta-regexp kurulum bağımlılıklarıNormal ifade örnekleri:
< replaceeregexp byline = "true" > < regexp pattern = "Normal ifade" / > < ikame ifadesi = "değiştirilecek değer" / > < fileset dir = "$ {unpack.war.dir} / WEB-INF" içerir = "web.xml" / > < / replaceeregexp >Byline özelliği, değiştirilirken aynı anda bir satırın mı yoksa birden fazla satırın mı değiştirileceğini onaylamak için kullanılır; pattern özelliği normal ifadeyi belirtmek için kullanılır; ikame ifadesi değiştirme değeridir ve değiştirme değeri, karşılık gelen yapılandırma dosyasında tanımlanır; dosya kümesi özelliği Dir, değiştirilen dosyanın bulunduğu dizini belirtmek için kullanılır ve içerir, hangi dosyanın değiştirileceğini belirtmek için kullanılır. Normal ifadede veya ikame değerinde görünüyorsa " < "Bir çıkış karakteri kullanmanız gerekiyorsa" < ".
Normal ifadeler için destek Eclipse 3.1'de yerleşiktir; ancak komut satırında düzenli ifade desteği gerektiren bir komut dosyası çalıştırırsanız, normal ifade paketini indirmeniz ve bunu sınıf yoluna eklemeniz gerekir. Bir özellik dosyasının değerini değiştirmenin basit bir örneği, makaleye eşlik eden deploy.xml dosyasında verilmiştir. Normal ifade örnekleri bu makaleye ekli deploy.xml'de bulunabilir.
Ant, öznitelik değerlerine göre gereksiz dosyaları silmek için koşullu ifadeler kullanır
Dağıtım paketini oluştururken, hedef ortama bağlı olarak bazı farklı dosyalar silinebilir. Örneğin, bir üretim ortamında test etmek için gereken kodun genellikle silinmesi gerekir, ancak bir test ortamında buna ihtiyaç yoktur. Bu nedenle, yargılama için koşullu ifadelere ihtiyaç vardır. Aşağıdaki gibi:
< target name = "checkTestEnv" > < koşul özelliği = "isTestEnv" > < istrue value = "$ {deploy.isTestEnv}" / > < /durum > < antcall target = "trueCondition" / > < antcall target = "falseCondition" / > < /hedef > < target name = "trueCondition" if = "isTestEnv" > < echo message = "$ {projectName} içinde doğru koşul" / > < /hedef > < target name = "falseCondition" if = "isTestEnv" > < echo message = "$ {projectName} projesinde yanlış koşul" / > < /hedef >Yukarıdaki örnekte, önce $ {deploy.isTestEnv} değerini okuyun (deal.properties yapılandırma dosyasında) ve okunan değere göre isTestEnv özelliğini ayarlayın. $ {Deploy.isTestEnv} değeri true ise, İsTestEnv değeri de doğrudur; aksi takdirde yanlıştır. Ardından hedef segmentleri sırasıyla trueCondition ve falseCondition çağırın. Burada ifade değeri "istrue" ile yargılanır ve Ant'ta not / ve / veya, equals, vb. Gibi diğer birçok ifade sağlanır. Koşullu ifadeler hakkında özel bilgiler için lütfen şu adrese bakın: /ant.apache.org/manual/CoreTasks/condition.html, bu sayfa indirilen belgede de bulunabilir.
TrueCondition segmentinde yargıç isTestEnv, eğer doğruysa çalıştırın, aksi takdirde çalışmayacaktır; falseCondition segmentinde ayrıca isTestEnv'i yargılayın, eğer yanlışsa çalıştırın, aksi takdirde çalışmaz, segmentte duruma göre karşılık gelen şeyleri yapabilirsiniz. Koşullu yargı örnekleri, bu makalenin deploy.xml dosyasında bulunabilir.
Yeniden paketleyin ve farklı bir dizine kopyalayın
Yukarıdaki değiştirme işlemi tamamlandıktan sonra, paket açma dizinindeki içeriği yeniden paketlemek için savaş çağrısı yapın.
< target name = "yeniden paketleme" > < war destfile = "$ {pack.base.dir} / $ {projeAdı} .war" basedir = "$ {unpack.base.dir} / $ {projeAdı}" webxml = "$ {unpack.base.dir} / $ {projeAdı} /WEB-INF/web.xml" manifest = "$ {unpack.base.dir} / $ {projeAdı} /META-INF/MANIFEST.MF" > < /savaş > < /hedef >Ayrıntılı örnekler için lütfen bu makaleye ekli deploy.xml ve deploy.properties eklerine bakın.
sonuç olarak
Bu makaleden, etkili bir Ant betiği yazmanın, dağıtım paketini derlerken ortaya çıkan sorunları çözebileceğini görebiliriz. Bu değişiklikleri yapılandırma dosyasına koyun ve üretimi sağlamak için dağıtım sırasında farklı yapılandırma dosyalarını değiştirin Farklı dağıtım paketleri. Makalede ayrıca, Ant komut dosyalarını yazma / hata ayıklama etkinliğinizi artırmak için Eclipse'in nasıl kullanılacağı anlatılmaktadır.