17 Mayıs 2017 Çarşamba

Maven Nedir

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