Maven Nedir?

MEHMET ARİF EMRE ŞEN
Yazilim VIP
Published in
3 min readJul 3, 2019

Bu yazının amacı Maven ile siz okurları tanıştırmaktır. Bu sebeple, fazla detaya inmeden kısaca Maven nedir? Neden Maven kullanmalıyız? Bu konular hakkında kısa kısa bilgiler veriyor olacağım. Öyleyce öncelikle en temel soruyla başlayalım neden Maven?

Neden Maven?

Aslında aşağıdaki durumlar aslında neden Maven’a ihtiyaç duyuyoruz sorusunun cevabı, eğer,

  1. Yönetmeniz gereken çok fazla bağımlılığınız varsa
  2. Bağımlılıklarınız çok sık güncelleniyorsa
  3. CD / CI ve Testing işlemlerini uygulamayı düşünüyorsanız
  4. Kod dokümantasyonunu, kaynak kodunu, ZIP olarak veya JAR olarak vb arşivlemeyi düşünüyorsanız

Maven öğrenmeye başlayarak doğru bir adım attınız tebrik ederim. Öyleyse nedir bu Maven kısaca buna değinelim.

Nedir bu Maven

Maven, POM(Project Object Model)’a dayanan güçlü bir proje yönetim aracıdır. Proje oluşturma, bağımlılık ve dokümantasyon için kullanılır. ANT gibi derleme işlemini basitleştirir. Ancak ANT’den çok daha ileri bir teknolojidir.

Kısacası, Maven için herhangi bir Java tabanlı projeyi oluşturmak ve yönetmek için kullanılabilecek bir araçtır demek çokta yanlış olmayacaktır. Maven, Java geliştiricilerinin günlük işlerini kolaylaştırır ve genellikle herhangi bir Java tabanlı projenin anlaşılmasına yardımcı olur. Peki Maven’ın yardımcı olduğu temel noktalar nelerdi?

  • Projeleri kolayca build edebiliriz
  • Hiç zorlanmadan JAR, WAR gibi istediğimiz paket formatında projeyi derleyebiliriz
  • Projenin bağımlılıklarını kolayca yönetebiliriz
  • Proje hakkında meta bilgilerini tutabiliriz
  • Projeleri Kaynak Kodu Yönetim Sistemlerine(Git, SVN) kolayca entegre edebiliriz

Temel Kavramlar

Elbette her konuda olduğu gibi Maven’ı anlamanız için bilmeniz gereken bazı temel kavramlar yer almakta. Şimdi bunları sırası ile ele alalım.

POM Dosyası

Project Object Model(POM) dosyası aslında, hem proje hakkında bilgileri hemde projenin konfigürasyonu hakkında, bağımlılıkları, kaynağı, kullanılan pluginler, projeyi derlemek için gerekli komutlar vb. Bilgi içeren bir dosyadır. Eğer bir proje üzerinde Maven komutlarını kullanmak istiyorsanız, o projenin POM.xml dosyasını vermeniz gerekmektedir. Maven bütün işlemleri bu POM.xml dosyasını baz olarak yapar. Bu yazı Maven ile tanışma yazısı olduğu için fazla detaya girmeyeceğim, ancak bu POM.xml dosyasının iç yapısını daha detaylı bir şekilde anlatan bir yazı daha yazmayı planlıyorum. İlgili yazı sitemize eklendiğinde burada sizinle ilgili linki paylaşacağım.

Dependencies and Repositories

Bir java uygulaması geliştirdiğimizde, yer yer başka JAR dosyalarını projenize eklersiniz. Ya da geliştirdiğiniz projeyi destekleyen küçük küçük kütüphaneler yazarsınız. Eğer sizin bir projeniz, herhangi biri tarafından yazılmış başka bir kütüphaneyi kullanıyorsa, bu kütüphane sizin projenizin bağımlılığıdır. Maven dünyasında bu bağımlılıklar Dependency olarak isimlendirilmiştir.

Repository kavramı ise bu bağımlılıkların bulunduğu yer olarak tanımlayabiliriz. Çoğu zaman Maven’ın kendi sunmuş olduğu Central Maven Repository üzerinden Maven sizin için bağımlılıkları çeker. Central Maven Repository’i kullanmak için herhangi bir ayar yapmanız gerekmez. Zaten öntanımlı olarak Maven orayı kullanır. Ancak siz isterseniz, kendi repositorynizi kurabilirsiniz. Tek yapmanız gereken bunu POM.xml’de tanımlamak.

Build Life Cycles, Phases and Goals

Build Life Cycle, peşi sıra gelen Build Phase’leri temsil eder ve her bir Build Phase’de birden fazle Goal vardır. Örnek vermek gerekirse, clean ve package Maven goalleridir. Bir tanesi paketlenmiş(build edilmiş) dosyaları siler, diğer goal ise projeyi yeniden derler ve paketler.

Build Plugins

Build Plugin’ler spesifik olarak kendinize özgü Build Goal’ler tanımlamanızı sağlar. Hali hazırda, oldukça işlevsel olan bir sürü plugin’i işiniz düşütüğü zaman bulabilirsiniz. Ancak eğer kendim Maven plug-in yazmak istiyorum derseniz, özgürsünüz. Java ile istediğiniz plug-in’i yazabilirsiniz.

Kaynakça

Yazıyı yazarken kullandığım ağırlıklı olarak aşağıdaki kaynağı kullandım. Eğer konuya ilgili iseniz kullanmış olduğum kaynağıda inceleyebilirsiniz.

Kaynak: https://www.geeksforgeeks.org/introduction-apache-maven-build-automation-tool-java-projects/

--

--