Özellikle CI/CD süreçlerinin yaygınlaştığı günümüzde, bağımlılıkların güvenli, tutarlı ve izlenebilir biçimde yönetilmesi kritik önem taşımaktadır. Bu ihtiyacı karşılayan repository yöneticileri, yazılım artifact’ları için merkezi bir kontrol noktası oluşturarak build sürelerinin kısalmasını, sürüm tutarlılığını ve otomasyon süreçlerinin sağlıklı şekilde işlemesini mümkün kılar.
Nexus Repository Nedir?
Nexus Repository, yazılım geliştirme sürecinde kullanılan tüm bileşenleri (kütüphaneler, paketler, build çıktıları, container imajları vb.) merkezi olarak saklayan ve yöneten evrensel bir repository yöneticisidir. Kurum içindeki tüm yazılım bileşenleri için tek, kontrollü bir “kayıt sistemi” (single source of truth) görevi görür.
Nexus Repository’nin Başlıca Kullanım Alanları
- Dış (Maven Central, npm, PyPI, NuGet vb.) ve iç paketleri tek noktadan yönetme
- Uzak depolardaki bileşenleri proxy’leyip cache’leyerek build sürelerini kısaltma ve ağ bağımlılığını azaltma Bir geliştirici bir paketi ilk kez çektiğinde Nexus bu paketi cache’ler; sonraki tüm geliştiriciler paketi çok daha hızlı şekilde Nexus üzerinden indirir.
- Erişim kontrolleri ve politikalarla güvenliği artırma, riskli veya onaylanmamış bileşenleri engelleme
- CI/CD boru hatlarıyla entegre olarak artifact yaşam döngüsünü otomatikleştirme
Bu yazıda, Sonatype Nexus Repository ile Gradle kullanılarak derlenen örnek bir proje üzerinde entegrasyonun nasıl yapılacağını adım adım ele alacağız.
- Maven Proxy Repository’lerinin Oluşturulması
Nexus Repository arayüzünden:
Administrator → Repository → Create Repository adımlarını izleyerek, projede kullanılan repository’leri proxy repository olarak tanımlıyoruz.

Maven kütüphanesi olması nedeniyle, format olarak maven2 seçiyoruz.

Proxy url kısmına Google’ın Android ve Google servislerine ait kütüphanelerin yayınladığı maven repository adresini tanımlıyoruz.

Aynı şekilde, Maven central kütüphanelerinin bulunduğu repository adresini tanımlıyoruz.

Proxy Repository
- Uzak bir repository’ye (ör. Maven Central, nuget.org, Anaconda, Docker Hub) bağlı çalışır.
- İstenen bileşen önce local cache’te aranır; yoksa uzak repodan çekilip proxy’de saklanır.
- Aynı bileşen tekrar istendiğinde artık yerelden servis edilir (daha hızlı ve daha az ağ trafiği).
Group Repository
- Birden fazla proxy ve/veya hosted repository’yi tek bir URL altında birleştirir.
- Geliştirici tarafında tek kaynak tanımlanır; arka planda tüm üye repolar taranır.
2- Proxy Repository’lerin Group Repository Altında Birleştirilmesi
Bu repository’leri ayrı ayrı maven2 (proxy) tipinde oluşturduk.
Şimdi ise bunları tek bir repository altında toplamak için repository type olarak maven2 (group) yöntemini kullanacağız.
Oluşturmuş olduğumuz proxy repository’leri Members kısmına ekleyerek kaydediyoruz. Böylelikle iki repository’yi tek bir repository üzerinden kullanabiliyor olacağız.

Repository sekmesine gelerek oluşturduğumuz group repository için Copy butonuyla repository URL’ini kopyalıyoruz.

3 - Repository’nin Gradle Build dosyasına entegrasyonu
Tanımladığımız repository’yi projeye entegre etmemiz gerekiyor. Projedeki settings.gradle.kts dosyasına, kopyalamış olduğumuz repository URL’ini ekliyoruz.

Sonrasında gradle build --info komutu ile build işlemini tetiklediğimizde, info çıktılarında tanımladığımız repository URL’i üzerinden kütüphanelerin çekildiğini görüyoruz.

Nexus Repository arayüzünde de çekilen paketleri görüntüleyebiliyoruz. Cache’de tutulan bu paketler, sonraki build işlemlerinde hız kazandıracaktır.
