Maven; proje
yönetim aracıdır. Yazılım projeleri için build, deployment, dokümantasyon vs.
gibi kolaylıklar sağlar. Apache Maven; açık kaynaktır. Java dünyasının
vazgeçilmez standardıdır. Maven; Ant ‘a alternatif olarak gösterilen JDT(Java
Development Tool) ‘dur. Ant ‘ın projeyle ilgili üst düzey bilgileri
içermemesinden dolayı Maven geliştirilmiştir.
Projenin build aşamasını basitleştirir ve standartlaştırır.
Bunu gayet kolay tanımlanabilen proje konfigürasyonu (pom.xml) aracılığı ile
yapar.
Apcahe Maven’ın
faydaları nelerdir?
1.
Proje yönetimini kolaylaştırır.
2.
Belirli standartlar oluşturulabilir.
3.
Kütüphane (.jar) bağımlılığını ortadan kaldırır.
4.
Farklı IDE’ler içinde proje taşınabilir hale
gelir.
5.
Proje temeli başka bir projede kullanabilir.
1.
Proje
yönetimini kolaylaştırır
Projede kullanılacak tüm kütüphaneler ve eklentiler POM(Project Object Model) dosyasından
kolayca yönetilebilmektedir. Pom.xml dosyası projenin ayar dosyasıdır. Çeşitli
işlerde kullanabilir.
Dokümantasyon,
POM dosyası proje dokümantasyonu da içerebilmektedir. Yani proje hakkında bilgi
edinmek için sadece bu dosyaya bakmak yeterli olacaktır. (tanım,
geliştiriciler, lisans, bağımlı olduğu diğer projeler v.s.)
Proje yapılandırma
yönetimi, projenizin build ya da deploy yapılandırmalarını POM dosyasından
yönetebilirsiniz.
Sürüm yönetimi,
her Maven projesinin bir grup id ‘si, bir yapı id ‘si ve bir de sürüm numarası
vardır. Projenin farklı sürümlerini saklayabilir ve bunları daha sonra yeni
projelerde kullanabiliriz.
2.
Belirli
standartlar oluşturulabilir
Maven; proje iskeleti yaratmaya olanak sağlar. Ayrıca
projenin yönetimi için standart bir yaşam döngüsü tanımlar: Temizle-Derle-Test
Et-ÇalıştırYayınla… gibi. Siz çeşitli eklentilerle (plugin) bu döngüye müdahale
edebilir, projenizin gerekliliklerine göre değiştirebilirsiniz. Maven’ın
çekirdeği aslında çok basittir. Çekirdek sadece gerekli jarları internetten
nasıl indireceğini ve XML dosyalarıyla yapılan ayarların nasıl uygulanacağını
bilir. Bu yüzden çok hafiftir (lightweight). Eklentilerle Maven’ı ayarlamak
size kalır.
Maven’ın bir diğer avantajı da archetype'lar. Java'da
aslında en önemli ve de zor kısımlardan biri projeyi ilk oluşturma kısmıdır, ne
nerede olacak, neler classpath'te olacak, şu şunu gördü mü gibi kısımlar. Bunun
için archetype'lar oldukça temiz birer çözüm sunarlar. Web application mı
yapacaksınız, maven-archetype-webapp ile başlayın.
3.
Kütüphane
(.jar) bağımlılığını ortadan kaldırır
Kendi deposundan gerekli olan kütüphaneleri projeye otomatik
olarak indirerek kütüphane bağımlılığını ortadan kaldırır.
Projede kullanmak istediğiniz kütüphane dosyalarını ilk
olarak sizin local repository klasörünüzde arar, eğer bulamazsa kendi
sunucularında arama yapar, eğer kendi sunularında da bulamazsa sizin
tanımlayacağınız bir sunucu adresinden dosyayı sizin local klasörünüze indirir
ve projeniz içerisinde kullanabilmenizi sağlar. Ayrıca bir kütüphane başka
kütüphanelere bağımlıysa bu bağımlı olduğu kütüphaneleri de indirir ve
projenize ekler.
Kurumsal Java projeleri o kadar büyük olabilir ki, bazen
100’lerce 3. parti kütüphane jar’ı kullanmanız gerekebilir. Bu jarları
internetten birbirleriyle uygun sürümlerine göre indirip IDE’nizde
kütüphaneleri koyduğu yere koymanız, sonra ayrı ayrı javadoc ve kaynak
kodlarını ayarlamanız ve bunları proje üzerinde geliştirme yapan herkesin
standart bir şekilde uygulaması angarya olur. Öyle ki projeyi geliştirmekten
çok yönetimine kafa patlatırsınız. Maven buna da çözüm getirir. Maven’ın
yaklaşık 200 GB büyüklüğünde çevrimiçi bir deposu vardır. Siz Maven’a projenizde
hangi kütüphaneyi kullanmak istediğinizi söylersiniz, o da bu depodan jarları
indirip sizin yerel deponuza kaydeder ve projenin classpath’ını bu jarları da
dâhil edecek şekilde değiştirir.
4.
Farklı
IDE’ler içinde proje taşınabilir hale gelir
Doğru konfigüre edilmiş bir maven projesi her IDE'de direkt
olarak import edilir ve çalışır. Böylelikle ide-spesifik dosyaları da version
control dışında bırakabilirsiniz. Örneğin siz Netbeans’te çalışıyorken
Netbeans’in oluşturduğu dizin yapısı ile arkadaşınız Eclipse’de çalışıyorken
Eclipse’in oluşturduğu dizin yapısı veya bunların kullandığı özel ayarlar
yüzünden projelerin taşınabilirliğinin olmamasının önüne geçer.
5.
Proje
temeli başka bir projede kullanabilir.
Bir proje başka bir projede kullanılabilir ya da birden
fazla proje bir araya getirip çok
modüllü bir proje oluşturulabilir.
Maven’ın Zayıflıkları
Zayıf yanı ise project lifecycle'ın çok dayatmacı olmasıdır.
Her proje için aynı adımlar, süreçler geçerli olmayabilir, maven bunu
dayatıyor. (bunun için gradle tavsiye ediliyor).
Netbeans ve Intellij kullanıcıları için kullanımı çok basit
olmasına rağmen Eclipse kullanıcıları için zahmetlidir.
Daha detaylı bilgi için
(http://kahveninhatiri.blogspot.com.tr alınmıştır.);
Kaynaklar :
http://kahveninhatiri.blogspot.com.tr/2011/04/turkce-maven-rehberi.html
http://blog.burakkutbay.com/apache-maven-nedir.html
https://kurukod.wordpress.com/2015/06/26/maven-nedir-nasil-kullanilir-2/
Hiç yorum yok:
Yorum Gönder