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üphaneleri 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.
https://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.3</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 iskeleti 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.