Maven POM

Merhaba arkadaslar, bu yazımızda Maven için en önemli bir konu olan POM’dan bahsedeceğiz.

POM(Project Object Model)

POM, xml dosya formatında olan ve bir projenin build edilmesinden, nasıl edileceğine, bağımlılıklarından, packagingine kadar proje ile ilgili olan her türlü bilgiyi içerisinde barındıran bir dosyadır. Maven’in son versionunda pom.xml olarak adlandırılır, önceki versionlarında farklı isimlendirmeler vardı.

POM’un projenin base directory’sinde bulunması gerekir.

Örnek bir pom’a bakalım;

Pom’da olması zorulunlu olan groupId, artifactId ve version’dur, bunları proje olusturma aşamasında zaten set ediyoruz. Version defalut olarak 1.0.0-SNAPSHOT’dır. GroupId -> company name, articactId -> project name’dir.

Projemiz eğer maven repo’sunda bulunuyor şu şekilde erişilebilir olacak;

Maven, proje ve/veya uygulamaları unique identifier olarak tanımlamak için groupId, artifactId, version ve packaging ifadelerini kullanarak sağlar. Eğer tüm bu değerler aynı ise iki proje çakışacaktır ve hangisini kullandım vs gibi sıkıntılar oluşacaktır.

Proje unique syntaxı şu şekilde oluşturulur (GAV) -> groupId:artifactId:version

Tekilliği sağlarken GAV’a göre sağlar eğer yetersiz olursa packagingdeki paket type(jar, war) ile sağlamaya çalışır.

POM içerisinde kullanabilecegimiz bazı tag’lere bakalım;

  • packaging : Paketleme tipini belirtir, default olarak jar’dır. Jar, War, Rar vs gibi tipler kullanılabilir.
  • name : Projeye isim vermek içindir. Verilmesinden yanayım.
  • url : Proje’nin adres niteliğindedir.
  • dependencies : Uygulama bağımlılıklarının tanımlandığı kısımdır.
  • scope : Proje ortamını belirler, compile, test, runtime olabilir.
  • properties, mailingList, parent vb gibi kısımlara ilerleyen zamanlarda yazılar içerisinde değinecegim.

Örnekle bakalım;

Dependency olarak test için junit ekledik, name ve url bilgisi verdik.

Not : Her proje için tek bir tane pom bulunmalıdır.

Super POM

Her Maven POM’u super pom’dan inherit edilir. Özel olarak belirtilmemişse default olarak Base POM’dan inherit edilir.

Süper pom baya uzun yer vermedim bu nedenle ama şuradan erişebilirsiniz : super pom

Ayrıca maven, effective-pom da kullanır build etmek icin. Effective pom ve süper pom da her ikisi, geliştiricilerin kendi pom’larında daha az configürasyon ve düzenleme yapmalarını sağlamak içindir.

Screenshot from 2016-05-28 23:12:32

 

 

Örneğin yukarıdaki pom’a göre effective pom şu şekilde oluşacaktır;

 

POM hakkında genel olarak söyleyeceklerim bu kadar arkadaslar.

Bir sonraki yazıda görüsmek üzere, esen kalın.

~ A.Akkus

 

856 Total Views 2 Views Today