Apache Maven - Kısaca

Feb 17 2023
Bir Java Geliştiricisiyseniz, projeniz üzerinde çalışırken günlük faaliyetleriniz şunları içerir: Kodu yazmak, Kodu derlemek, Kodu test etmek, Onu bir jar veya savaş dosyası gibi bir yapı biçiminde paketlemek ve ardından bunu dağıtmak bir web sunucusuna yapıt. Manuel olarak halletmeniz gereken pek çok görev var ve açıkçası, bu görevleri Apache Maven adlı bir kitaplığı kullanarak otomatik hale getirebilirsiniz. java projeleri Öncelikle maven'in temellerini anlayalım Maven Nedir? Maven, Java ve Scala gibi JVM dilleri kullanılarak geliştirilen projelerin yönetilmesine yardımcı olmak için geliştirilmiş bir proje yönetim aracıdır.

Bir Java Geliştiricisiyseniz, projeniz üzerinde çalışırken günlük faaliyetleriniz şunları içerir: Kodu yazmak, Kodu derlemek, Kodu test etmek, Onu bir jar veya savaş dosyası gibi bir yapı biçiminde paketlemek ve ardından bunu dağıtmak bir web sunucusuna yapıt.

Manuel olarak halletmeniz gereken pek çok görev var ve açıkçası bu görevleri Apache Maven adlı bir kitaplık kullanarak otomatikleştirebilirsiniz.

Bu yazıda, Apache Maven'in ne olduğunu ve Java projelerinizi oluşturmak ve yönetmek için onu nasıl etkili bir şekilde kullanabileceğinizi anlayacağız.

İlk olarak, maven'in temellerini anlayalım

Maven nedir?

Maven, Java ve Scala gibi JVM dilleri kullanılarak geliştirilen projelerin yönetilmesine yardımcı olmak için geliştirilmiş bir proje yönetim aracıdır. Proje yönetimi araçlarının ana görevi şunları içerir:

  1. kaynak kodu oluşturma
  2. Kaynak kodunu test etme
  3. Kavanoz, savaş veya kulak içine paketleme
  4. Java belgeleri oluşturuluyor
  5. Bağımlılıkları yönet

Şimdi biraz daha ilerleyelim ve Maven'i makinemize nasıl kuracağımıza bakalım.

  1. https://maven.apache.org/ adresini tarayıcınızda açın
  2. İndirme bölümüne gidin ve en son maven sürümü zip klasörünü indirin ve çıkarın
  3. Ortam yolu değişkenini ayarlayın Java_HOME ve MAVEN_HOME ekleyin
  4. Ortam değişkenine maven yolunu ekleyin. ör: F:\Apache-maven-3.6.3-bin\Apache-maven-3.6.3\bin

Maven Deposu:

Maven Deposu, pom.xml ile paketlenmiş jar dosyalarının bir dizinidir. Maven, depolardaki bağımlılıkları arar. Üç tür maven deposu vardır.

  1. Yerel Depo
  2. Merkez depo
  3. Uzak Depo

Ayrıca MAVEN_HOME/conf/settings.xml içinde bulunan settings.xml dosyasında local repository'nin konumunu değiştirebiliriz Örnek: E:\apache-maven-3.1.1\conf\settings.xml

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"   
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  
  <!-- localRepository  
   | The path to the local repository maven will use to store artifacts.  
   |  
   | Default: ${user.home}/.m2/repository  
  <localRepository>/path/to/local/repo</localRepository>  
  -->  
</settings>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"   
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  
   <localRepository>e:/mavenlocalrepository</localRepository>  
</settings>

Merkezi depo, bu URL tarafından görüntülenebilen birçok ortak kitaplık içerir.http://search.maven.org/#browse.

Maven Uzak Deposu: Maven uzak deposu web üzerinde bulunur. JBoss kütüphanesi gibi bazı kütüphaneler merkezi depoda eksik olabilir, bu nedenle pom.xml dosyasında bir uzak depo tanımlamamız gerekir.

Maven Proje yapısı:

Şimdi Maven proje yapısını anlayalım. Bir maven projesi oluşturduğunuzda, adında bir klasör göreceksiniz.

  1. src — kaynak — uygulama kaynak kodumuzun ve uygulama birim testinin köküdür
  2. src/main/java — uygulamamızın kaynak kodunu içeren, uygulamamıza yazdığımız tüm üretim kodları bu klasörün içindedir.
  3. src/main/resources — projemizde kullandığımız tüm statik dosyaları sakladığımız yer. örnek application.properties , XML dosyaları, CSV dosyaları vb.
  4. Bir web uygulaması geliştiriyorsanız, tüm html ve javascript dosyaları bu klasörün altına gelecektir.
  5. src/test/java — uygulamamız için birim testini ve entegrasyon testini yazdığımız yer
  6. pom.xml — proje bağımlılıklarının meta verilerini içerir
  7. hedef — bu klasörde maven tüm derlenmiş java sınıfı dosyalarını depolar

POM, projenin meta verilerini içerir ve aynı zamanda birçok yinelenen görevi otomatikleştirmemize yardımcı olan eklentileri yapılandırmak için bağımlılıkları yönetmekten sorumludur, işte temel pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0   
http://maven.apache.org/xsd/maven-4.0.0.xsd">  

  <modelVersion>4.0.0</modelVersion>  
  <groupId>com.maven.application</groupId>  
  <artifactId>my-app</artifactId>  
  <version>1</version>  
</project>

  • model version — başka bir maven sürümüne değiştirmediğiniz sürece model sürümü her zaman 4.0.0 olarak ayarlanacaktır. Örneğin, 3.0'ın üzerindeki daha yüksek sürümler
  1. Basit pom dosyası
  2. Süper pom dosyası
  3. Etkili pom dosyası

Süper pom dosyası: Süper pom dosyasını maven kurulum dizininde lib yolu altında bulabilirsiniz. Ve jar dosyasının içinde — maven-model-builder, org adında bir paket bulabiliriz.

Etkili pom dosyası: Etkili pom dosyası, basit pom ve süper pom dosyalarının birleşiminden başka bir şey değildir. Bu, pom.xml dosyalarının tüm bilgilerini tek bir yerden kontrol etmenin bir yoludur. Etkili pom dosyasına göz atmak için maven terminal tipine gidin

mvn-help: effective-pom

Maven'in iki tür bağımlılığı vardır

  1. Anlık görüntü bağımlılığı: anlık görüntü bağımlılığı, etkin geliştirme aşamasında olan ve kararsız olan bir proje anlamına gelir.
  2. Yayın bağımlılığı: proje tamamlandıktan sonra yayınlanır

Bağımlılık kapsamlarını kullanarak maven bağımlılığının görünürlüğünü kontrol edebiliriz. 5 tür kapsam vardır

  1. Derleme: Bu, tüm bağımlılıklar için varsayılan kapsamdır ve derleme ile işaretlenen bağımlılıklar, projenin sınıf yolunda bulunur.
  2. Sağlanan: kapsamı sağlanan bir bağımlılık, çalışma zamanında jdk veya web sunucusu tarafından sağlanacaktır.
  3. Çalışma zamanı: adından da anlaşılacağı gibi, çalışma zamanı ile işaretlenen bağımlılık sadece çalışma zamanında kullanılabilir, ancak derleme zamanında mevcut değildir.
  4. Test: Bu bağımlılıklar yalnızca test yazılırken ve yürütülürken kullanılabilir.
  5. Sistem kapsamı: Bu, sağlanan kapsama benzer, ancak tek fark, sistemdeki bağımlılığı nerede bulabileceğimizi açıkça belirtmemizdir. Çalışma zamanında bu bağımlılığı sağlayan JDK veya web sunucusu yerine, maven'in bu bağımlılığı bulabileceği sistem yolunu sağlıyoruz. Sistem yolunu kullanarak yolu sağlayabiliriz

Maven yapı yaşam döngüsü 3 farklı adıma ayrılmıştır:

  1. Varsayılan — bu adımın bir parçası olarak maven birçok görevi yerine getirir,
  2. maven pom.xml dosyasını okur ve geçerli xml'e sahip olup olmadığımızı doğrular.
  3. Ardından maven kaynak kodumuzu derleyecek ve sınıf dosyalarını oluşturacak ve bunları hedef klasörde saklayacaktır.
  4. Ardından test aşamasında, testin bir parçası olarak maven proje içinde birim testini çalıştırır.
  5. package — paketin bir parçası olarak, maven kaynak kodunu jar veya war veya ear veya zip dosyaları gibi bizim seçtiğimiz bir yapıya paketler
  6. entegrasyon testi — projemiz herhangi bir entegrasyon testi içeriyorsa ve yürütülüyorsa
  7. doğrulama — maven önceki aşamada çalışan entegrasyon testinin başarılı olup olmadığını kontrol eder
  8. install — maven oluşturulan paketi yerel depoya kurar
  9. konuşlandır - kurulumdan sonra maven uzak bir depoya konuşlandırılacaktır.
  10. 2. Temizleme: Bu adım esas olarak derlenmiş java sınıflarını veya oluşturulan meta verileri temizlemekten sorumludur. Örnek: mvn temiz kurulum

    3. Site: Bu, projemizde bulunan java belgelerini oluşturmaktan sorumludur.

    Maven, oluşturma sürecini çok daha gelişmiş bir şekilde basitleştirir. Umarım Apache Maven hakkında öğrendiğiniz ve anlamanız gereken bazı noktalar vardır.

    Makaleyi okuduğunuz için teşekkür ederiz. Lütfen alkışlayın, paylaşın ve yorum yapın. bu tür makaleler yazmam için beni cesaretlendirecek. Değerli önerilerinizi paylaşın, dürüst geri bildiriminiz için teşekkür ederiz!!!

    En Sık Sorulan Java8 Akışına Dayalı Mülakat Sorusu — Bölüm 1 JAVA'da Bir Veritabanına Erişmenin En Kolay Yolu Java Kodlamada Çoklu İstisnaları Yakalayın : JavaScript'te n'inci Fibonacci Sayısını Bulun Python Açıklaması