Bu forumda yapılan şikayetlerden birkaçına karşı çıkmak istiyorum:
Maven ya hep ya hiçtir. Ya da en azından belgelerden anlayabildiğim kadarıyla. Karınca yerine maven'i kolayca kullanamazsınız ve yavaş yavaş daha gelişmiş özellikleri benimseyemezsiniz.
Bu doğru değil. Maven'in büyük kazancı, bağımlılıklarınızı rasyonel bir şekilde yönetmek için kullanmaktır ve eğer bunu maven'de yapmak ve diğer her şeyi karınca yapmak istiyorsanız, yapabilirsiniz. Bunu nasıl yapacağınız aşağıda açıklanmıştır:
<?xml version="1.0" encoding="UTF-8"?>
<project name="foo" basedir="." xmlns:maven="antlib:org.apache.maven.artifact.ant" >
<maven:dependencies verbose="true" pathId="maven.classpath">
<maven:pom id="maven.pom" file="pom.xml" />
</maven:dependencies>
</project>
Artık pom dosyasında tanımlanan tüm maven bağımlılıklarını içeren 'maven.classpath' adında bir sınıf yolu nesnesine sahipsiniz. Tek ihtiyacınız olan maven karınca görevleri kavanozunu karıncanızın kitaplık dizinine koymaktır.
Maven, oluşturma sürecinizi ağ bağlantınıza bağımlı hale getirir.
Varsayılan bağımlılık ve eklenti getirme süreci bir ağ bağlantısına bağlıdır, evet, ancak yalnızca ilk derleme için (veya kullanımdaki bağımlılıkları veya eklentileri değiştirirseniz). Bundan sonra tüm kavanozlar yerel olarak önbelleğe alınır. Ağ dışı bağlantıyı zorlamak istiyorsanız, maven'e çevrimdışı modu kullanmasını söyleyebilirsiniz.
Başlangıçtan itibaren size katı bir yapı uygular.
Bunun dosya biçimine mi yoksa "kurala karşı yapılandırma" sorununa mı atıfta bulunduğu net değil. İkincisi için, çok sayıda görünmez varsayılan var java kaynak dosyalarının ve kaynaklarının beklenen konumu veya kaynağın uyumluluğu gibi . Ancak bu katılık değil, sizin için mantıklı varsayılanlar koyuyor, böylece bunları açıkça tanımlamanıza gerek kalmaz. Tüm ayarlar oldukça kolay bir şekilde geçersiz kılınabilir (ancak yeni başlayanlar için belirli şeylerin nasıl değiştirileceğini belgelerde bulmak zor olabilir).
Dosya biçiminden bahsediyorsanız, bu bir sonraki bölümün yanıtında ele alınmaktadır ...
XML tabanlı olduğu için ANT kadar okunması zor.
Öncelikle, kötü bir repliğe sahip olmasının gerekçesi olarak bir şeyin bazı yönlerinin 'karıncadan daha iyi olmadığından' nasıl şikayet edebileceğinizi anlamıyorum. İkincisi, hala XML olmasına rağmen, XML'nin biçimi çok daha tanımlıdır. Dahası, bu şekilde tanımlandığı için, bir POM için mantıklı kalın bir istemci editörü yapmak çok daha kolaydır. Her yere atlayan sayfalarca uzun karınca inşa senaryoları gördüm. Herhangi bir ant build komut dosyası editörü bunu daha lezzetli hale getirmeyecek, sadece biraz farklı bir şekilde sunulan birbirine bağlı görevlerin uzun bir listesi.
Burada gördüğüm bazı geçersizliklere sahip olan veya sahip olduğum birkaç şikayet olduğunu söyledim, en büyük varlık
- Belgeler zayıf / eksik
- Tekrarlanabilir yapılar
- Eclipse entegrasyonu kötü
- Hatalar
Cevabımın iki katı olduğu. İlk olarak, Maven, Ant veya Make'den çok daha genç bir araçtır, bu nedenle bu uygulamaların olgunluk düzeyine ulaşmasının zaman alacağını beklemelisiniz. İkincisi, beğenmediyseniz düzeltin . Bu açık kaynak kodlu bir proje ve onu kullanmak ve sonra çözmede herkesin yardım edebileceği bir şeyden şikayet etmek bana oldukça aptalca görünüyor. Belgeleri beğenmediniz mi? Yeni başlayanlar için daha net, daha eksiksiz veya daha erişilebilir hale getirmek için katkıda bulunun.
Yeniden üretilebilir derlemeler sorunu iki konuya ayrılır: sürüm aralıkları ve otomatik maven eklenti güncellemeleri. Eklenti yükseltmeleri için, bir projeyi bir yıl sonra yeniden oluşturduğunuzda, aynı JDK'yı ve tam olarak aynı Ant sürümünü kullandığınızdan emin olmadığınız sürece, bu sadece farklı bir adla aynı problemdir. Sürüm aralıkları için, tüm doğrudan ve geçişli bağımlılıklar için kilitli sürümlere sahip geçici bir pom üretecek ve onu maven yayın yaşam döngüsünün bir parçası haline getirecek bir eklenti üzerinde çalışmanızı öneririm. Bu şekilde, sürüm oluşturma pomlarınız her zaman tüm bağımlılıkların tam açıklamaları olur.