Maven Introduction

“Allah, malı istediğine verir. İlmi ise isteyene verir.” – Hadis-i Şerif

Merhaba arkadaslar, bu yazı ile beraber Maven yazılarına başlamış olacağız. Maven yazıları boyunca maven’in yapısına/felsefesine, kullanımına, niçin/nasıl gibi durumlarını inceleyeceğiz.

Giriş yazısında kurulum ve genel bilgiler yer alacaktır.

Maven Introduction

Maven, Java proje yönetim aracıdır. Uygulama bağımlılıklarını, test ve deploy kurallarını, paketleme tipini, raporlama, dokümantasyon, içerisinde plugin mantığı ile ek modüllerin eklenebildigi ve buna benzer yapıların bulunduğu bir tool’dur. Apache’nin tarafından geliştirilir ve open-source’dur. Maven’i niçin kullanmalıyız;

  • Jar’ları organize etmek.
  • Proje bağımlılıklarını kontrol etmek, version problemleriyle başa çıkmak.
  • Standartlaşmış dosya/dizin yapısı ile ne? nerede? gibi sorunlarla uğraşmamak için.
  • Projeninizi war, jar vb gibi export etmek, deployment kuralları belirlemek(java 1.7 ile compile et gibi).
  • Projelerin taşınırlığını artırmak. Bkz: madde 1’e benzer.

Eğer daha önce herhangi bir build tool ile çalışmış iseniz zorlanmayacağınız bir yapı olacaktır. Ant, Gradle, Ivy gibi tool’ların kendine göre avantaj ve/veya dezavantajları bulunur, bu konuya pek girmeyeceğim, baska bir yazının konusu olabilir.

Maven Environment

Maven’i öncelikle şuradan indirelim : https://maven.apache.org/download.cgi

İndirdiğimiz dosyayı herhangi bir dizine taşıyalım, unix ortam için anlatacağım, windows için de aynıdır. Unix için indirdiğimiz dosyayı /usr/share/maven altına taşıdım.

Daha sonra terminal’den maven home ayarları yapmalıyız. Şunları yazalım;

Environment’ı hallettikten sonra terminal’den maven’i sorgulayalım;

Screenshot from 2016-04-09 09:56:12

Kullandığımız maven versiyonu, maven base directory ve diğer bilgileri görebiliriz.

Maven POM

Maven, proje bağımlılıklarını, build ile ilgili bilgileri, pluginleri, proje hakkında veriler içeren xml dosyası olan POM ile işler. POM(Project Object Model), bir xml dosyasıdır, dolayısıyla bildiğimiz sularda yüzüyor olacağız. Maven’in önceki versiyonlarında bu dosyanın adı project.xml, maven.xml gibi isimlendirmleri vardı ancak şuan pom.xml olarak kullanılmakta.

Daha sonra detaylı olarak pom’un içeriğine değinecegiz ama şuan örnek bir congifügürasyon ile özet olarak gösterelim;

POM’da root element project olmalıdır. Pom içerisinde uygulamamız için identifier olan groupId ve artifactId ile versiyon mevcut, versiyon default olarak 1.0 -SNAPSHOT gelir, library’leri dependency olarak junit eklemişiz. İlerde pom.xml içeriğini detaylıca değinecegiz, packaging, plugin, süper pom gibi konuları detaylandıracağız.

Maven Folder Directory

Maven’in özelliklerinden biri de standart dosya/dizin hiyerarşi olduğundan bahsettik. Yazılım geliştiricilerin dev esnasında ve/veya projeye sonradan katılan yazılımcıların projeye adaptasyonunu kolaylaştırır. Standart folder layout structure’a bakalım;

  • src/main/java : Java source kod dosyalarını içerir.
  • src/main/test : Test dosyalarını, sınıflarını içerir.
  • src/main/resource : external dosyalar burada tutulabilir(img, prop file vs)
  • src/main/webapp : Web uygulamaları için gerekli dosyaları içerir. Web uygulaması oldugundan WEB-INF klasörünü de içerir.
  • target : Build edilen(compile) uygulamanın output dosyalarını içerir.
  • site : dokümantasyon için kullanılır.

Maven Plugin

Maven içerisinde core pluginler ile birlikte birçok plugin mevcut. Core pluginlernden bazıları; install, clean, package, deploy gibi pluginler mevcut. Packaging plugins olarak; war, ear, rar, jar gibi paketleme pluginleri mevcut. Bunlara yeri geldikçe kısmen değineceğiz.

Giriş yazımızın sonuna geldik arkadaslar, mutlu ve esen kalın.

~ A.Akkus

 

630 Total Views 1 Views Today