1. Maven bir proje yönetim aracıdır.

Şöyle ki biz bir Java projesini inşa etmek istesek, tabi bizim birden fazla jar dosyasına ihtiyacımzı olacaktır bunu her defasında internette jar dosyalarını bulup indirmek yerine bunu bize sağlayan güzel bir yönetim aracı Maven sayesinde biz bağımlılık (dependency) olarak bunu belirtiyoruz daha sonrasında bu araç bize jar dosyalarımızı gidip otomatik indirip projemize dahil ediyor yani biz boş yere gidip jar dosyalarını indirmiyoruz da bu araç gidip bizim için bulup indiriyor.

Maven olmadan :

Maven ile

  1. Tek yapmamız gerek Maven'a hangi dependency (bağımlılığa) ihtiyacımız olduğunu söylemek.
  2. Maven'de gidip bunları projemize indirecek.

! Not : Önemli noktadan bir tanesi şudur -> Örneğin bizim Spring JAR Files eğer ki başka bir dependecy'e bağımlı ise yani başka bir jar dosyası da olmadan çalışmıyorsa eğer tabii ki proje ayaklanmaz; Maven sayesinde eğer ki bir dependency'i biz indirdiğimzde o dependency'de başka bir yere bağımlı ise otomatik olarak diğer dependecy'i de indirir burası çok önemli noktadır.!!

Maven'ın Proje Yapısı

  1. src/main/java : Java kodumuz burda bulunur.
  2. src/main/resources : Properties / Config dosyaları burada bulunur.
  3. src/main/webapp : JSP dosyaları ve web config dosyaları yada diğer web dosyaları (images,css,js gibi)
  4. src/test : Unit testing kodları ve özellikleri burda bulunur.
  5. target : Maven tarafından otomatik olarak derlenmiş kod burda bulunur.

Maven'ın Key Konseptleri

1. POM (Project Object Model) Dosyası : Bu dosya bizim projemiz için configuration dosyasıdır ve bizim dependency'leri eklediğimiz yerdir bu sayede maven gidip bu dosyaya bakıp buna göre dependency'leri indirip projemizi de buna göre derler.

Project Meta Data : Projenin ismini,versiyonunu yada çıktısını (JAR,WAR) belirtiriz.

Dependecies : Projemizin bağımlılıklarını belirttiğimiz yerdir. Yani Maven'a bana şu kütüphaneleri getir deriz o da isteğimizi yerine getirir.

Plug-ins : Projeyi çalıştırma, derleme, JUnit testlerinin reportlarını belirtme veya projeyi JAR/WAR olarak build inşa görevlerini yerine getirme kısmıdır.

Maven'ın Project Koordinatları ve Elemanları

Nasıl ki bizim evimizi yada bir arkadaşımızın yanına gitmek için google mapste ki dünyada bulunan her yere özel bir koordinat sistemi varsa Mavenda koordinat sistemlerine sahiptir bunlar:


<groupId>net.mintercoder</groupId>

<artifactId>myApp</artifactId>

<version>2.0.1</version>

groupId : Bir şirketin,grubun yada bir organizasyonun ismidir. Tabi her şey ters yazılır isim uygunluğu gereği (net.mintercoder)

artifactId : Projenin ismini belirtir. (myApp)

version : Yayınlanmış uygulamanın specific versiyonunu belirtir. (2.0.1)

Not : Eğer ki uygulama aktif bir geliştirme aşamasında ise version olarak:

"1.0-SNAPSHOT" belirtilebilir.

Tabi çoğu yerde bunları GAV(GroupId,ArtifactId,Version) olarak görebilirsiniz. Bir projede, bir bağımlılık belirtmek istersek eğer 3 tane şeye ihtiyacımız vardır bunlar :

  1. GroupId
  2. ArtifactId
  3. Version (Bu opsiyoneldir girmesekte olur ama devops süreçlerinde girilmesi en mantıklı olandır.)