2013-02-19 17 views
29

Kısa bir süre önce Gradle'ı bir derleme sistemi olarak kullanmaya başladım. Gradle Ant ve Maven gibilerle yapar İlk karşılaştırma Maven'in bir açıklayıcı inşa sistemi ise, Ant bir zorunlu inşa sistemi olup, olmasıdır. Gradle, Maven tarafından zorunluluk olmadan bir deklaratif yapı sistemi iken. Imperative vs Declarative yapı sistemleri

bu şartların bildirim ve zorunlu o yapı sistemleri hakkında konuşurken söz konusu olduğunda daha iyi anlamak istedi.

cevap

41

Özetle, bir ant komut dosyası karınca aracına ne yapması gerektiğini söyler - "bu dosyaları derleyip daha sonra bu klasöre kopyalayın. Sonra bu klasörün içeriğini alın ve bir arşiv oluşturun."

bir maven pom biz sonucu olarak istiyorum neyi beyan ederken - "Burada proje bağlıdır kütüphanelerin adları vardır ve biz bir web arşivi oluşturmak istiyoruz". Maven, kütüphaneleri nasıl bulacağını ve kendi kaynak sınıflarını nerede bulacağını bilir.

Karınca size daha fazla esneklik sağlarken, sizi tekerleği sürekli olarak yeniden icat etmeye zorluyor. Diğer taraftaki Maven daha az yapılandırma gerektirir, ancak özellikle farklı bir iş akışına alışmışsanız çok fazla kısıtlama hissedebilir.

DÜZENLEME: karınca maven karşılaştırmanın önemli bir özelliği karınca değil iken maven, bağımlılıklar nereye çıkan sanat eseri koymak, bulunan bir kongre, dosyalar yalan gereken yerde açıklayan olmasıdır .

Bu yüzden maven'i bir otobüse binmek gibi kullanmayı düşünebilirsiniz - girdiğiniz yerden ve gittiğiniz yerden durağı seçersiniz. Karınca kullanmak bir araba kullanmak gibidir - bunu kendiniz yapmanız gerekir. Otobüs sürücüsüne ne yapması gerektiğini söylemek zorunda değilsiniz, ancak duraklar gitmek istediğiniz yerden çok uzak olabilir.

EDIT2: 'Tekerleği yeniden icat' metaforu umduğumdan daha az açık görünüyor. Demek istediğim budur:

Mantıklı varsayılanlar/kurallar olmadan, her bir proje için proje yapısını ve yapı yaşam döngüsünü açıkça tanımlamanız gerekir, bu da genellikle bir zevk ve görüş konusudur. Tercihler ekipler ve şirketler arasında değiştiği için, süreçler oluşturun. Bu, yeni proje üyeleri ve daha sonraki koruyucular için daha fazla bilişsel çaba gerektirir. Geliştiricilerin deneyimine ve uzmanlığına bağlı olarak, son çözümün genişletilmesi ve kullanılması zor olabilir.

Aşağıdaki yorumda da belirttiğim gibi, ant yapılar için en iyi uygulamaların mevcut olmasına rağmen, bunların her bir proje için uygulanmaları veya projeden projeye kopyalanarak yapıştırılmış bir kutu haline getirilmeleri gerekir. yapı aracının kendisinin varsayılan değeri.

Maven, takasın diğer tarafındaki tadı benim için çok uzak. Varsayılanları değiştirmek mümkün olduğu kadar kolay olmamalı.

+0

Karınca üzerinde çalışmadım ama böyle bir şey zaten çözülmüş olmalı?Ant'deki eklentinin bir parçası gibi, daha çok projede aynı şey var mı? –

+1

@AnkitDhingra Karınca ile yapılan popüler uygulamadan son kez işe yaramış olan ayarları kopyalayıp yapıştırmak :) Eminim ki en iyi yöntemler vardır, ama yine de bunları uygulamak zorundasınız. Lütfen – kostja

+0

@AnkitDhingra 'ya bakınız, gerçekten tekerleği yeniden icat etmek gibi değil, haklısınız, onu yeniden inşa et. – kostja