Maven Nedir? Kurulumu ve Kullanımı

Maven nedir, ne demek ile başlayarak Java platformunda kullanılan yazılım inşa otomasyonu motoru maven kurulumu, kullanımı ve komutları yer alıyor.

Maven nedir?

Maven genellikle Java platformunda yer alan komutların derlenmesi sırasında kullanılan otomasyon ve inşa aracıdır.

Java programlama dili ile uygulama geliştirirken çeşitli kütüphaneler kullanamak isteyebiliriz.

Örneğin; Java ile PDF dosyası oluşturmak için Apache PDFBox, iText, JPOD gibi çeşitli kütüphanelerini kullanabiliriz.

Her kütüphane için gerekli olan JAR dosyalarını indirmek ve projeye uygun olarak yerleştirmek (classpath) gerekir.

Ancak sadece kütüphanelerin indirilmesi ve projeye dahil edilmesi yetmeyecektir.

Ayrıca her yeni güncelleme sonrası güncel dosyaların takip edilmesi gerekecektir.

Maven proje dosyasına eklenen bağımlılıklar ile kolay bir şekilde indirmeyi ve proje yerleştirmeyi sağlar.

Kullanılan kütüphaneler proje dosyasında yer aldığından taşınabilirlik sağlanmış olur.

Sunmuş olduğu dizin yapısı sayesinde diğer geliştiricilerin projeyi takibini kolaylaşır.

Maven kurulumu

Maven dosyaları indirilir.

http://maven.apache.org

İndirilen dosyaları herhangi bir dizine çıkartılır.

tar -xf apache-maven...

bin dizininde yer alan mvn dosyası işletim sistemi komut yorumlayıcısı ile çalıştırılarak kullanılır.

Maven komutlarını her yerden çalıştırabilmek için bin dizini işletim sistemi Ortam Değişkenleri alanına eklenebilir.

Kurulum tamamlandıktan sonra aşağıdaki komut kullanarak kurulum kontrol edilebilir.

mvn --version

Maven nasıl çalışır

Maven ilk olarak ayar dosyasını (config file – pom.xml) okur.

Gerekli olan bağımlılıkları yerel depoda (yerel önbellek) arar.

Windows için %homepath%\.m2 klasöründe arar.

Linux için $HOME/.m2 klasöründe arar.

Dosyalar yerel depoda yoksa uzak depoda (Maven Central Repository – https://repo.maven.apache.org/maven2/) arar.

Dosyalar uzak depoda varsa yerel depoya indirir ve projeye dahil eder.

Maven ayrıca projeye dahil edilen her kütüphanenin ihtiyaç duyduğu bağımlılıkları da indirir.

Maven dizin yapısı

Proje geliştirirken her geliştirici farklı dizin yapısını kullanabilir.

Farklı geliştiriciler tarafından belirlenen farklı dizin yapıları projenin başka kişi tarafından takip edilmesini zorlaştırır.

Maven sağladığı standart dosya-dizin yapısı sayesinde kolay bir şekilde projelerin takip edilmesini sağlar.

Bu yapı sayesinde her geliştirici kolay bir şekilde ilgili dosyaya erişim sağlar.

Ayrıca bir çok IDE (Netbeans, Eclipse, IntelliJ) bu dizin yapısın destekler.

  • /src/main/java – Java komutları yer alır.
  • /src/main/resource – Ayar dosyaları yer alır.
  • /src/main/webapp – JSP, JSF, Resim, CSS, JavaScript gibi web dosyaları yer alır.(WEB-INF, META-INF)
  • /src/test – Birim testleri yer alır.
  • /target – Derlenen komutların çıktısı yer alır.

Maven ayar dosyası

Project Object Model (POM.xml) proje talimatlarını içerir ve üç kısımdan oluşur.

Project Meta Data,

  • Proje adı
  • Proje sürümü
  • Proje çıktısı-türü (jar, web)

Dependencies

  • iText
  • Apache PDFBox
  • Spring
  • Hibernate

Plugins

Projeye ait doküman hazırlama, komut analizi gibi özel görev oluşturmak için kullanılır.

Örnek POM.xml dosyası

<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.yusufsezer</groupId> - Proje adı (Paket adı kullanılır genellike)
<artifactId>MavenUygulamam</artifactId> - Proje adı
<version>0.0.1-SNAPSHOT</version> - Semantic versionlama kullanmak faydalı olacaktır. (5.0.0.RELEASE - 5.0.0.FINAL) SNAPSHOT(halen geliştiriliyor.)
<packaging>jar</packaging>

<name>MavenUygulamam</name>

<dependencies>
  <dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itextpdf</artifactId>
    <version>5.5.13.1</version>
  </dependency>
</dependencies>


<!-- maven plugin'leri -->

</project>

Kütüphaneleri bulmak için aşağıdaki adresi kullanabilirsiniz.

https://mvnrepository.com/

Diğer maven ayarları super pom alarak adlandırılan dosyadan alınır.

Tüm proje ayarları için ayar dosyasının olduğu dizinde aşağıdaki komudun çalıştırılması yeterli olacaktır.

mvn help:effective-pom

Super POM ayar dosyasında çeşitli maven plugin’lerin olduğu görünecektir.

Maven kullanımı

Maven ayar dosyaları Super POM olarak adlandırılan dosyadaki pluginleri kullanarak işlem yapar.

Bu işlemler phase olarak adlandırılır.

Derlenmiş dosyaları temizlemek için clean kullanılır.

mvn clean

Birim testlerini çalıştırmak için test kullanılır.

mvn test

Projeyi derlemek için compile kullanılır.

mvn compile

Projeyi paketlemek(jar, war) için package kullanılır.

mvn package

Proje dokümantasyonu oluşturmak için site kullanılır.

mvn site

Maven archetype

Hızlı bir şekilde proje isketleti oluşturmak için kullanılan bir araçtır.

Aracı kullanmak için archetype:generate komutu kullanılabilir.

mvn archetype:generate

Komut çalıştırıldığında sırayla kullanılacak hazır şablonu, proje adını, proje sürümünü isteyecektir.

Maven destekleyen bir IDE’de(Netbeans, Eclipse, IntelliJ vb.) kullanılabilir.

Bazı hazır archetype isimleri aşağıda yer almaktadır.

  • maven-archetype-archetype
  • maven-archetype-j2ee-simple
  • maven-archetype-mojo
  • maven-archetype-plugin
  • maven-archetype-plugin-site
  • maven-archetype-portlet
  • maven-archetype-quickstart
  • maven-archetype-simple
  • maven-archetype-site
  • maven-archetype-site-simple
  • maven-archetype-webapp
maven.apache.org/archetypes

Archetype ile Java projesi oluşturmak;

mvn archetype:generate -DgroupId=com.yusufsezer -DartifactId=JavaProjem -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Archetype ile Java web projesi oluşturmak;

mvn archetype:generate -DgroupId=com.yusufsezer -DartifactId=JavaWebProjem -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

Harici JAR dosyalarını kullanmak

Maven merkezi depo’da yer alamayan JAR dosyalarını kullanmayı destekler.

Bu diğer JAR dosyaları da projeye eklenebilir.

Harici JAR dosyasını eklemek için systemPath ile dosya yolunun verilmesi yeterki olacaktır.

<dependency>
	<groupId>com.yusufsezer</groupId>
	<artifactId>ozeljar</artifactId>
	<scope>system</scope>
	<version>1.0</version>
	<systemPath>src\lib\ozeljar.jar</systemPath>
</dependency>

Diğer araçlar

Maven kod analizi, birim testi gibi işlemleri yapmak için çeşitli araçlara sahiptir.

Bu araçlar pom.xml dosyasına eklenerek işlem yapılabilir.

Java Derslerine buradan ulaşabilirsiniz.

Hayırlı günler dilerim.

Yusuf SEZER

Yusuf SEZER

Computer Engineer who interested about web technologies, algorithms, artificial intelligence and embedded systems; constantly exploring new technologies.


Bunlara'da bakmalısın!