Apache Maven nedir? POM, lifecycle ve bağımlılık yönetimi
Yayın tarihi:
Güncelleme:
Teknik makaleler > Apache Maven nedir? POM, lifecycle ve bağımlılık yönetimi
2026 bağlamı ve güvenli kullanım
Sonuç: Maven, Java projeleri için kurallara dayalı bir build ve proje yönetimi aracıdır. POM; proje koordinatlarını, bağımlılıkları, eklentileri ve build ayarlarını tanımlar. Lifecycle fazları derleme, test, paketleme, doğrulama ve yayınlama adımlarını tekrarlanabilir hale getirir.
Ne öğreneceksiniz
- Maven'ın yönettiği öğeler ile sürüm kontrolünde veya CI yapılandırmasında tutulması gereken öğeler.
- POM koordinatları, repository'ler, eklentiler, fazlar ve bağımlılık kapsamları arasındaki ilişki.
- Bağımlılık çözümlemesinin build sürecinin yalnızca bir bölümü olması.
Bu kimin için: Maven'i değerlendiren veya devralınan bir pom.xml'i anlamaya çalışan Java geliştiricileri.
2026 bağlamı: Maven Wrapper kullanın, eklenti sürümlerini sabitleyin, repository kimlik bilgilerini koruyun ve CI'da etkin POM'u inceleyin. Maven, eklenti ve JDK sürümlerinin uyumluluğunu resmî belgelerden doğrulayın.
Güvenlik notu: Orijinal makaledeki komutlar ve yapılandırma örnekleri mevcut üretim ortamında yeniden çalıştırılmamıştır. Desteklenen sürümleri, yedeklemeleri, erişim kontrollerini ve geri alma adımlarını uygulamadan önce ayrı bir test ortamında doğrulayın.
Başlıca resmî kaynaklar
Genel bakış
Bundan sonra Maven olarak anılan Apache Maven, Java projeleri için bir build ve proje yönetimi aracıdır. Bu makale POM, repository, eklenti ve lifecycle kavramlarını birlikte ele alarak Maven'ın bir build'i nasıl yürüttüğünü açıklar.
İçindekiler
1. Maven nedir?
Maven bir build ve proje yönetimi aracıdır. Java build kavramı size yabancıysa önce aşağıdaki makaleyi okuyun.
Java'da build ne anlama gelir? Derleme, test, paketleme ve çalıştırma
Tipik bir build şu işlemleri içerir:
- JAR bağımlılıklarını çözümleme;
- derleme çıktısının dizinini belirleme; ve
- JAR veya WAR artefaktı oluşturma.
Maven, POM ve proje kurallarını kullanarak bu işlemleri koordine eder.
Resmî “What is Maven?” sayfası Maven'ın amaçlarını açıklar.
https://maven.apache.org/what-is-maven.html
Aşağıdaki özgün alıntı bu amacı özetler.
Maven’s primary goal is to allow a developer to comprehend the complete state of a development effort in the shortest period of time. In order to attain this goal, Maven deals with several areas of concern:
- Making the build process easy
- Providing a uniform build system
- Providing quality project information
- Encouraging better development practices
Kısacası, Maven doğru çalışan bir derleme ortamı oluşturmayı kolaylaştırır.
2. Maven ile yapabilecekleriniz
Aşağıdaki özellikler, Maven'ın geliştirici makineleri ile CI arasında tutarlı bir build süreci kurmasını sağlar.
2-1. Temel build adımlarını çalıştırma
Maven standart lifecycle fazlarını çalıştırır; böylece her proje aynı işler için farklı komut dosyaları oluşturmak zorunda kalmaz.
- test: testleri çalıştırır;
- clean: önceki build çıktısını temizler; ve
- package: JAR veya WAR artefaktını üretir.
2-2. Bağımlılıkları çözümleme
Maven, POM'da bildirilen artefaktları ve bu artefaktların geçişli bağımlılıklarını repository'lerden indirir.
Bu nedenle tek bir bağımlılık eklemek, derleme, test veya çalışma zamanında gerekli başka JAR'ları da projeye getirebilir. Maven, ortaya çıkan küme için kapsam ve arabuluculuk kurallarını uygular.
Ayrıntılı çözümleme mekanizması için aşağıdaki makaleyi okuyun.
Maven repository'lerden geçişli bağımlılıkları nasıl çözer?
2-3. JAR bağımlılıklarını yönetme
POM, her bağımlılığın koordinatlarını, sürümünü ve hangi kapsamda gerektiğini belirtir. Yalnızca testte kullanılan bağımlılıklar, çalışma zamanında gerekenlerden bu şekilde ayrılır.
pom.xml sürüm kontrolünde tutulabildiği için ekip üyeleri ve CI aynı build tanımını kullanır. Bu yaklaşım, JAR dosyalarını elle kopyalamaya göre daha tekrarlanabilir bir ortam sağlar.
3. Özet
Maven; POM tabanlı proje modeli, standart lifecycle, eklentiler ve bağımlılık çözümlemesini bir araya getirir. Böylece aynı build süreci geliştirici makinelerinde ve CI ortamında tekrarlanabilir.