Merhabalar arkadaşlar. Bu yazı ile birlikte birkaç yazı yazacağım Maven yazılarına başlamış oluyoruz.

Maven Nedir

Maven Apache Vakfı tarafından geliştirilen ve projenin inşası ile yönetimini kolaylaştırmayı amaçlayan bir araçtır. İlk olarak dışarıya kapalı şekilde Apache’nin bir başka projesi olan Jakarta Alexandria projesinin inşa aşamalarının basitleştirme adına geliştirilmeye başlanmıştır fakat ilerleyen zamanlarda Apache Vakfı bu yazılımı açık kaynak olarak tüm yazılımcılara sunmuştur.

Maven projenin ihtiyaç duyduğu bağımlılıkları yönetme vazifesini üzerine alır ve proje geliştiricileri arasında muhtemel bağımlılık farklarından ortaya çıkacak çakışmaları veyahut olmayan bağımlılık problemlerini ortadan kaldırır. Ayrıca Maven projenin IDE bağımlı geliştirilmesinin önüne geçmeye çalışır. Teoride Maven projenin IDE bağımsız geliştirilmesini amaçlar fakat pratikte geliştirme aşamasında kullanılan diğer araçlar projenin yine IDE bağımlı olmasına sebep olabilir.

Ayrıca Meven’ın üzerine aldığı diğer sorumluluk da projenin versiyon kontrolü’nü basitize etmek ve kolaylaştırmaktır.

Yani en basit tabiri ile proje geliştirme sürecini basitize etmeye amaçlayan bir araçtır.

Maven’dan önceleri yine Apache’nin bir başka build tool’u olan ANT kullanılıyordu fakat Maven’ın popülerleşmesi ile ANT kullanımı da bir hayli azalmış.

Sistem Gereksinimleri ve Kurulum Aşaması

Maven cross-paltform bir araç olmasındna ötürü onu Windows, Mac OS ve GNU/Linux işletim sistemlerinde kullanabilirsiniz. Fakat öncelikli olarak bilgisayarınızda JDK’nın (JRE değil buraya dikkat, JDK olacak) kurulu olması gerekmektedir. Maven’ın 3.3 ve sonraki sürümleri bilgisayarınızda JDK 1.7 ve üzerinin kurulu olmasını istemektedir. Yazılarımız boyunca maven 3.3 üzerini kullanacağımız için sisteminizde JDK 1.7 veya üzeri bir JDK olduğundan emin olmanız gerekmektedir. Bilgiyarınız konsol/terminal ekranında java -version yazmanız halinde size kurulu olan JDK bilgisini verecektir.

Bende JDK 1.8 kurulu olduğu için JDK taraflı bir engel yok.

Maven memory açısından herhangi bir minimum gereklilik tutmuyor.

Disk kapasitesi olarak kurulum için 10 MB bir disk alanının olması gerekiyor fakat proje geliştirme aşamasında Maven bizim için birçok kütüphane indirip koyacağı için Maven’ın sitesinde en azından 500 MB bir disk alanının Maven Local Repo için gerekli olduğu bildiriliyor.

Son olarak da Maven kurulmadan önce JAVA_HOME parametresinin işletim sisteminde ayarlanmış olması gerekiyor. Eğer ayarlanmış değilse bunu araştırıp ayarlayıp yazıya o şekilde devam etmelisiniz.

Kurulum işlemleri de şu şekilde:

  • Windows İçin: https://maven.apache.org/download.cgi adresinden şu anki en güncel sürüm olan 3.5 için apache-maven-3.5.0-bin.tar.gz ya da apache-maven-3.5.0-bin.zip dosyalarından birisini indirin ve herhangi bir yerde klasöre çıkartın. Ardından Control Panel -> System And Security -> System -> Advanced System Settings yolu ile gelişmiş ayarlar ekranını açın. Ardından Environment Variables butonuna tıklayın. System Environments alanındaki New butonuna tıklayarak M2_HOME adında ve değeri de az önce indirip klasöre çıkarttığınız maven klasörünün yeri olacak şekilde bir variable tanımlayın. Bu adımdan sonra zaten tanımlı PATH variable’ını bulup Edit deyin ve sonuna ;%M2_HOME%\bin ekleyip kaydedin. Son olarak konsol ekranından mvn -v deyip çıktı alabiliyorsanız maven kurulumu başarılı olmuş demektir.
  • Linux ve Mac OS: Linux ve Mac OS ortamlarında ise export PATH=/açılan yer/apache-maven-3.5.0/bin:$PATH diyerek maven’ı kurabilirsiniz.

Kurulum sonrası şu şekilde bir çıktı almalısınız:

İlk Maven Projesi

Şimdi Maven’ı sistemimize kurduk ve ilk projemizi oluşturabiliriz. Genel ve Maven projesini tanıma amaçlı bir proje oluşturalım. Bunun için terminalde mvn archetype:generate komutunu çalıştıralım. Komut bizim için bir adet basit, genel amaçlı bir Maven projesi oluşturacak. Bu komutu ilk kez verdiğinizde Maven proje oluşturma için bazı gerekli kütüphaneleri indirecektir. Ayrıca size konsol ekranında bazı sorular soracaktır. Choose a number sorularını enterlayıp default’u seçerek geçebilirsiniz.

  • Define value for property ‘groupId’: sorusunda projenizin bağlı olacağı bir grubun id bilgisini girmiş olursunuz.
  • Define value for property ‘artifactId’: sorusunda bu projeyi tanımlayıcı bir anahtar girmiş olursunuz. Proje ismi de budur.
  • Define value for property ‘version’: sorusunda projeniz için versiyon bilgisi girmiş olursunuz.
  • Define value for property ‘package’: sorusunda ise projeniz için default oluşturulacak bir bir paket ismi girmiş olursunuz.

Bu işlemler başarı ile tamamlandığında konsolda BUILD SUCCESS yazısını görürüz.

Proje oluşturulduktan sonra şöyle bir dizin yapısı bizi karşılar. Burada src klasörü Source kelimesinin kısaltmasından gelmektedir ve proje geliştirilirken yazılan kodlar bu klasör altında yer alır.main klasörü projenin kendisine ait kodları barındıracak kısım olurken test klasörü de projenin testi için yazılmış kodları barındıracaktır.

Şimdi Maven ile projenin compile ve test işlemlerini yapalım. Öncelikle terminalden projenizin içine, pom.xml’in yer aldığı dizine geçiş yapın. Ardından mvn compile komutunu verin. Bu komut önce gerekli olan bağımlılıklar var mı, indireyim mi diye bakacak ardından da proje içerisindeki Java sınıflarını derleyecektir. BUILD SUCCESS yazısını gördü isek olay tamamdır.

mvn compile komutu Java compiler’ı tetikleyecektir ve FirstMavenProject içerisinde derleşnmiş Java sınıflarının tutulacağı bir target klasörünün oluşmasını sağlayacaktır.

Target klasörü içinde ileride göreceğimiz şekilde .jar ya da *.war uzantılı dosyalarımız da olacak. Biz şimdi derlenmiş olan App sınıfını çalıştıralım. java komutu ile derlenmiş Java sınıflarını çalıştırabildiğimiz için terminal üzerinde *Hello World! yazısını görebildik.

Terminal üzerinden mvn test komutu verildiğinde de proje için yazılmış test kodları koşulur. Aşağıdaki ekran çıktısında göreceğiniz üzere test kodları koşulmadan önce gerekli test kütüphanesi bağımlılıkları indirildi.

Benim bu ilk yazıda anlatacaklarım bu kadar arkadaşlar. Gelecek yazıda pom.xml dosyasından ve Build Life Cycles konularından bahsedeceğiz.

Görüşene kadar sağlıcakla kalın.

Selam ve Sevgilerimle