Maven repository'lerden geçişli bağımlılıkları nasıl çözer?


Yayın tarihi:

Güncelleme:


Teknik makaleler > Maven repository'lerden geçişli bağımlılıkları nasıl çözer?

2026 bağlamı ve güvenli kullanım

Sonuç: Maven, JAR dosyalarını ada göre aramaz. POM'da bildirilen koordinatları çözer, artefaktın POM'unu indirir, geçerli geçişli bağımlılıkları izler ve farklı yollar farklı sürümler istediğinde bağımlılık uzlaştırması uygular.

Ne öğreneceksiniz

  • Yerel, merkezi, mirror ve özel repository'lerin çözümlemeye nasıl katıldığı.
  • Geçişli gereksinimlerin neden JAR dosyasında değil, bağımlılığın POM'unda tanımlandığı.
  • Bir sürümü elle değiştirmeden önce etkin bağımlılık grafiğinin nasıl inceleneceği.

Kimler için: İndirilen artefaktların nereden geldiğini ve projeye neden ek JAR dosyaları eklendiğini anlamak isteyen Maven kullanıcıları.

2026 bağlamı: Aşağıdaki Apache POI 3.17 koordinatları yalnızca tarihsel bir örnektir; sürüm önerisi değildir. Desteklenen güncel bağımlılıkları ve güvenilir HTTPS repository'lerini kullanın. Mümkün olduğunda checksum veya imza doğrulaması uygulayın ve bağımlılıklar için düzenli bir güncelleme politikası belirleyin.

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ış

Maven, gerekli JAR dosyalarını uzak repository'lerden otomatik olarak indirir. Bu makale, çözümleme işleminin hangi bilgilerle ve hangi sırayla yürüdüğünü açıklar.

Maven'a yeniyseniz önce aşağıdaki genel bakışı okuyabilirsiniz.

Apache Maven nedir? POM, lifecycle ve bağımlılık yönetimi

İçindekiler

  1. Maven'ın JAR bağımlılıklarını çözme mekanizması
  2. Özet

1. Maven'ın JAR bağımlılıklarını çözme mekanizması

pom.xml içinde bir bağımlılık bildirildiğinde Maven, koordinatları karşılık gelen artefakta dönüştürür. Ardından artefaktın POM'unu okur ve geçerli geçişli bağımlılıkları da çözer.

1-1. pom.xml içinde koordinatları bildirme

Bir bağımlılık; groupId, artifactId ve version değerleriyle tanımlanır. Aşağıdaki tarihsel örnek, Microsoft Office belge biçimlerini işleyen Apache POI 3.17 artefaktını ister.

pom.xml


<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.17</version>
</dependency>

Bu bildirim Maven'ın hem poi-3.17.jar dosyasını hem de POI'nin POM'unda tanımlanan gerekli geçişli bağımlılıkları indirmesini sağlar.

1-2. Uzak ve yerel repository'ler

Aşağıdaki şema, Maven'ın artefaktı nerede aradığını basitçe gösterir.

Maven uzak ve yerel repository akışı

Maven, ayrıca yapılandırılmadıysa artefaktları varsayılan olarak Maven Central'dan indirir. Repository adresi şöyledir:

https://repo1.maven.org/maven2/

Diğer public repository'leri incelemek için aşağıdaki dizinden yararlanabilirsiniz.

https://mvnrepository.com/repos

İlk çözümlemede indirilen artefaktlar yerel repository'ye kaydedilir. Sonraki build'lerde uygun kopya varsa yeniden indirilmez. Windows'ta yerel repository genellikle kullanıcı dizini altındaki .m2 klasöründedir.

Ek bir uzak repository kullanmak gerekiyorsa pom.xml dosyasına aşağıdaki repository tanımı eklenebilir. Kurumsal ortamlarda merkezi mirror ve kimlik bilgilerini settings.xml üzerinden yönetmek genellikle daha uygundur.

pom.xml


<repositories>
    <repository>
        <id>sonatype-nexus-snapshots</id>
        <name>Sonatype Nexus Snapshots</name>
        <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
        </snapshots>
    </repository>
</repositories>

1-3. Geçişli bağımlılıkları çözme

Bu örnekte poi-3.17.jar, çalışmak için commons-collections4-4.1.jar dosyasına ihtiyaç duyar. Maven bu ilişkiyi dosya adından tahmin etmez; repository'de artefaktla birlikte yayımlanan POM metadata'sını okur. Örneğin ilgili sürümün dizini şöyledir:

https://repo1.maven.org/maven2/org/apache/poi/poi/3.17/

Bu dizindeki poi-3.17.pom, POI'nin commons-collections4 bağımlılığını tanımlar. Maven artefaktı çözerken POM'u da alır, gerekli bağımlılıkları grafiğe ekler ve aynı işlemi uygulanabilir geçişli bağımlılıklar için sürdürür.

2. Özet

Maven, pom.xml içindeki koordinatları repository'lerdeki artefakt ve POM metadata'sıyla eşleştirir. POM'larda bildirilen geçişli bağımlılıkları izler, indirilen dosyaları yerel repository'de önbelleğe alır ve böylece tekrarlanabilir bir bağımlılık grafiği oluşturur.