2011-12-20 20 views
6

Apache-Ant/Ivy'ye yönettiğim bir Maven projesini değiştirmeyi düşünüyorum. Yapım süreci üzerinde daha fazla kontrole ihtiyacım var ve Maven ile çok sinirlendim. Lütfen Maven'in ne kadar iyi olduğu hakkında yorum yapmayın. Sorum şu Ivy ile ilgili.Ant/Ivy proje binası için

Daha sonra diğer projeler için minimum değişikliklerle kullanılabilen bir "standart" Ant yapı şablonu oluşturmak istiyorum.

Merkezi Maven depolarında (ör. Ticari kitaplıklar, Sun kitaplıkları, özel kütüphaneler, vb.) Bulunmayan üçüncü taraf kitaplıklarını yerleştirebileceğimiz merkezi bir "kurumsal" depo oluşturacağım. Bu kurumsal havuz yerel ağımızda mevcut olacak, ancak ofis dışından mevcut olmayabilir.

Her geliştiricinin ~/.ivy/repository numaralı özel deposu bulunacaktır. Ant derlemesinin, bu özel depoyu otomatik olarak kitaplık deposundaki değiştirilmiş kitaplık sürümleriyle güncelleştirmesini isterim.

~/.ivy/ant numaralı belgede, her bir projeye build.xml dosyalarını dahil etmek için "standart" modülleri Ant 1.8'deki include görevini kullanarak yerleştirmeyi planlıyorum. Bu modüller, farklı Scala ve Clojure sürümleri için farklı sürümlere sahip Scala ve Clojure derleme hedefleri gibi şeyler sağlayacaktır (örn .: scala-compile-2.9.1.xml, clojure-compile-1.3.xml, vb.) Yapı modülleri, kuruluş havuzunda kullanılabilir ve özel depolarda otomatik olarak güncellenmelidir. değişirler.

standart Maven dizin yapısını takip edecek her proje

: ${project}/src/main/java, ${project}/target/classes vb Geçmişte

, ben Ivy ama Ant dosyaları oluşturmak kullanarak çalıştı çok büyük olması lazım (> şablon kurmak için 500 satır dosya) ve yönetmek/düzenlemek zor. ~/.ivy/ant dizinindeki kendi derleme modüllerine standart hedefler koyarken, bu kod bloğundan kaçınabileceğimi umuyorum.

Bu yapılabilir mi? Üssün önündeyim mi? Ivy'de bulabildiğim tek doküman Apache web sitesinde (http://ant.apache.org/ivy). Kitaplar dahil başka herhangi bir doküman var mı?

+0

Sanırım kütüphaneler için özel depolara ihtiyacınız olacak. Ivy, bağımlılıkların giderilmesinde güncel kalmasını sağlayacak kendi başına [önbellek] (https://ant.apache.org/ivy/history/latest-milestone/concept.html#cache) ~/.ivy2 içinde yönetir. – oers

cevap

2

Şablon yapı dosyalarını bölünebilir yardımcı dosyalara bölme hakkında oldukça mantıklı bir fikir. Şahsen, şimdi karıncadan gerçekten büyük bir projeye geçiyorum (hiçbir bağımlılık yönetimi yok - sadece dosyaları ftp'den kopyalayarak). Bu şekilde yaptım - kilometre taşları hedefleri olan bir dosyam var - yani, derlemeye hazır, derlenmiş, arşivlemeye hazır, arşivlenmiş - yani. Sanırım fikri anladım. Tüm bu hedeflerin bağımlılıklarını yapılandırdım (karınca bağımlılıkları, yanlış anlamıyorum). Bu şekilde - derlenmeye hazır derlemeye hazır, derlenmeye hazır, buna benzer bir başlangıçta - bağlıdır. Bu hedeflerin vücudu yoktur - çoklu modül projenizin her modülünün her yapı dosyasına dahil olmaları içindir. Bu içe aktarma işleminin sürdürülmesi için bu hedeflerin tek amacı, bu içe aktarma şeyleri yüzünden oldukça zorlaşır ve hedefin ne kadar aşıldığını ve bu hedefin ne zaman yürütülebileceğini bilmek zor bir zamandır. Ama bu dosya ile her hassas kilometre taşı üzerinde vy inşa durumunu kolayca değiştirebilirim. Exteran exe ile yardım dosyalarını derlemek için tek bir modülde istiyorum. Sorun değil - bu projede sadece bunu yapıyorum - hazır arşivleme yardım derleme hedefine bağlıdır. Ve bu kilometre taşları hedefleri dahil edildiğinden - sadece bazılarını geçersiz kılabiliyorum - diğerleri de projeyi inşa etmenin istenen yolunu öneriyorlardı.

Stratejimin bir başka parçası - mixins dosyaları oluşturmak - her belirli alan için. Bu yüzden sarmaşık için bir dosyam var. Orada başlangıç, çözme, yayınlama vb. Ben sarmaşık kullanmak istediğimde - sadece bu dosyayı dahil et ve kilometre taşları hedeflerimden bağımsızlıkları yönetiyorum.Yapı tipikse - sadece bu dosyayı dahil ederim ve bir yapılandırma-yapılandırma işlevselliğine sahibim. Kutunun dışında. Nasıl?? Sadece diğer mixins ile birleştirerek. Karisimlar bunlara bagli olarak diger karisimlari içerebilir. Bu yüzden her mixin benim inşa stratejimin yeniden kullanılabilir bir parçasıdır. OOP gelen şeyler - tek ilgili birim. Sizin durumunuzda, scala malzemeleri için özel hedeflere sahip bir scala karışımı.

Daha sonra, çocuk projeleri ortak oluşturma etkinlikleri gerçekleştiren delegate.xml'im var. Multimodule projesi için istediğim her şey, test, ve her şeyim var. Yapım sırası, anti-sarmaşık görev oluşturma listesi ile değerlendirilir.

Diğer bazı dosyalar da var - ancak bu BÜYÜK ve ÇOK KORUMA projesinde yeniden kullanılabilir ve bakım yapılabilir bir yapıya sahip olmam için bana yardımcı olan stratejik temel dosyalardır. Öyleyse, ayrıntılarla ilgileniyorsanız, utangaç olmayın ve bana ulaşın. Size yardımcı olmaktan çok memnun olacağım çünkü sarmaşık dokümanlar gerçekten karmaşık ve eksik.

DÜZENLEME: Kitaplar hakkında - Ant in Action'u size yardımcı olabilir, bu kitaptan birkaç fikir aldım ve herkesin okumasını kesinlikle tavsiye ediyorum. Ayrıca sarmaşık şeyler bulabilirsin. Ve sarmaşık dokümanlar hakkında - üzgünüm, hepsi bu. Ama bu hantal ivy + karınca ile baş belası olduğunda - özel bloglarda birkaç ilginç yazı buldum. Yani ... bu boşluğu bir şekilde dolduruyor.