Nexus Repository Manager 3'ü Depo Olarak Kullanma Serisi 1 — Kurulum ve Maven Artifacts

Ahmet Cokgungordu
3 min readJul 1, 2019

Kurulum

Docker ile kuruluma başlıyoruz.

docker run -d -p 8081:8081 -p 8082:8082 -p 8083:8083 
--name my-nexus sonatype/nexus3:3.0.0

Nexus ile ilgili yazı dizisinde bu kurulum kullanılacağından yukarıda 8081–8082–8083 portlarının tümünü eşliyoruz. Bu yazıda maven için sadece 8081 numaralı bağlantı noktasını kullanacağız.

Nexus, 8081 bağlantı noktasından ayağa kalkacaktır.

Varsayılan giriş bilgileri eski versiyonlarda kullanıcı adı ‘admin’ ve şifre ‘admin123’ tür. Yeni versiyonda ise kullanıcı adı ‘admin’ ve şifre ‘/nexus-data’ içinde bulunan ‘admin.password’ dosyası içindedir.

Nexus veri klasörünü ana makinenize eşlemek için bir volume oluşturmak isteyebilirsiniz. Nexus verileri ‘/nexus-data’ içindedir.

Nexus’u Maven Deposu Olarak Yapılandırma

Yapılacaklar kısaca şu şekilde;

  • Snapshot’lar için private(hosted) bir depo yaratacağız,
  • Release’ler için private(hosted) bir depo yaratacağız,
  • Maven Central deposuna erişim sağlayan bir proxy depo yaratacağız,
  • Bu depoların tümünü tek bir URL altında sağlamak için bir grup deposu oluşturacağız.

Oluşturmak istediğiniz her yeni depo için yeni bir blob store açmak önerilmektedir. Bu şekilde, her depo için veriler ‘/nexus-data’(Docker container içinde)da farklı bir klasörde olacaktır.

Nexus ayağa kalktığında ‘default’ adında blob oluşturulmuş ve örnek olması için repository altında bazı depoların yaratılmış olduğunu göreceksiniz. Öncelikle repoların hepsini blob’larıyla birlikte oluşturmak için siliyoruz. Sonra ise ‘default’ blob tanımlanmış yolu da siliyoruz.

Bütün repository’ler için önce blob oluşturup sonra repository’lerini yaratacağız. Örnek olması açısından ilkinin tanımını yapalım.

İlk yaratağımız Snapshots depomuz için örnek blob tanımı aşağıdaki gibidir.

Snapshots Repo

pom.xml’nizin versiyon taginin sonunda -SNAPSHOT ile birlikte kullandığınız maven artifactleriniz için kullanacağınız bir depodur. Genel olarak kullanım biçimi <version>1.0.0-SNAPSHOT</version> olmaktadır.

Yeni bir maven2( hosted) deposu oluşturun ve aşağıdaki gibi yapılandırın:

Releases Repo

pom.xml’nizin versiyon taginin sonunda -SNAPSHOT olmadan kullandığınız maven artifactleriniz için kullanacağınız bir depodur. Genel olarak kullanım biçimi <version>1.0.0</version> olmaktadır.

maven-releases adında blob oluşturmayı unutmayın.

Yeni bir maven2( hosted) deposu oluşturun ve aşağıdaki gibi yapılandırın:

Maven Central için Proxy Repo

Maven Central’den indireceğiniz herşey için proxy görevi görmektedir. Aynı bağımlılığı bir daha indirmek istediğinizde Nexus’ta önbellekten verilir.

maven-central adında blob oluşturmayı unutmayın.

Yeni bir maven2(proxy) deposu oluşturun ve aşağıdaki gibi yapılandırın:

Group Repo

Bu depo, yukarıdaki tüm depoları gruplandırmamız içindir. Bu sayede uygulama client’larında indirme/deploy yapabilmesi için tek bir URL sağlanacaktır.

maven-public adında blob oluşturmayı unutmayın.

Yeni bir maven2(group) deposu oluşturun ve aşağıdaki gibi yapılandırın:

İhtiyacınız kadar depo oluşturabilir (diğer public depolara proxy’ler gibi) ve hepsini grup deposu altında toplayabilirsiniz.

İstemciyi ve Projeyi Nexus Deposunu Kullanacak Şekilde Yapılandırma

setting.xml dosyasını ~/.m2/settings.xml olacak şekilde yaratıyoruz.

Bu dosyada mvn’a grup deponuzu merkezi bir mirror olarak kullanmasını belirtecek ve kimlik bilgilerinizi yapılandıracaksınız.

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd">
<servers>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<mirrors>
<mirror>
<id>central</id>
<name>central</name>
<url>http://your-host:8081/repository/maven-group/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
</settings>

Şimdi de projeyi yapılandırıyoruz.

Yalnızca bağımlılıkları Nexus’tan indirmek istiyorsanız, bunu pom.xml içine koyun:

<project ...>
...

<repositories>
<repository>
<id>maven-group</id>
<url>http://your-host:8081/repository/maven-group/</url>
</repository>
</repositories>
</project>

Bunun yanında, projenizi yayınlamak istiyorsanız, şunu ekleyin:

<project ...>
...
<distributionManagement>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>http://your-host:8081/repository/maven-snapshots/</url>
</snapshotRepository>
<repository>
<id>nexus-releases</id>
<url>http://your-host:8081/repository/maven-releases/</url>
</repository>
</distributionManagement>
</project>

Artık projenizi mvn install veya mvn deploy ile deneyip Nexus’a gidip gitmediğini loglardan görebilirsiniz.

--

--