Maven ile Nexus’a Deployment Yapma

elifcan cakmak
Kod Gemisi
Published in
2 min readJun 10, 2020

Projenizde Maven kullanıyorsanız ve ortaya çıkan artifact’i Nexus artifact deposuna göndermek istiyorsanız bunu yapmak için Maven’ın deploy plugininden faydalanabilirsiniz.

Bu yazıda bunu yapmak için kullanabileceğiniz iki yöntemden bahsedeceğim. Bu yöntemleri deploy ve deploy file olarak iki ayrı şekilde inceleyebiliriz.

Öncelikle iki yöntemden hangisini kullanırsanız kullanın, Nexus deponuzun bilgilerini sunucuya vermeniz gerekiyor. Bunun için /etc/maven/settings.xml içinde servers kısmına aşağıdaki gibi bilgileri yazmanız gerekiyor. Bu noktada bu bilgileri ~/.m2/settings.xml altına da ekleyebilirsiniz. Buradaki fark; ilk belirttiğim dosya global ayarlar dosyasıyken ikinci dosya kullanıcıya ait ayarlar dosyasıdır. Eğer ikisi birden mevcutsa, ikisi birlikte aktif olur ve kullanıcının ayarları diğerini ezer. Detaylı bilgi için linke tıklayabilirsiniz.

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

Deploy

Nexus’a artifact göndermek için deploy komutunu kullanmak istiyorsanız öncelikle pom.xml içine aşağıdaki bilgileri eklemeniz gerekiyor:

Pluginler altına:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>

Project altına herhangi bir yere:

<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>*nexus-url*/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<url>*nexus-url*/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>

Burada dikkat etmemiz gereken nokta, pom.xml içinde vereceğimiz repository id’si ile /etc/maven/settings.xml içinde vereceğimiz id aynı olmalı. *nexus-url* kısmına kendi Nexus url’inizi yazmalısınız.

Bu noktada artık artifact’inizi aşağıdaki komutla deponuza gönderebilirsiniz:

mvn clean deploy

Deploy file

Kullanabileceğiniz ikinci yöntem deploy-file yöntemi. Bu yöntemde pom.xml’e ekleme yapmadan artifact’i deponuza gönderebilirsiniz. Bunun için kullanabileceğiniz iki komut var.

pom.xml’in bulunduğu dizindeyseniz:

mvn deploy:deploy-file -DgeneratePom=false -DrepositoryId=nexus-releases -Durl=*nexus-url*/nexus/content/repositories/releases -DpomFile=pom.xml -Dfile=target/artifact-0.3.0.jar

pom.xml yoksa:

mvn deploy:deploy-file -DgroupId=com.kodgemisi.project -DartifactId=project -Dversion=0.3.0 -DgeneratePom=true -Dpackaging=jar -DrepositoryId=nexus-releases -Durl=*nexus-url*/nexus/content/repositories/releases -Dfile=target/artifact-0.3.0.jar

Burada yine ilk yöntemde olduğu gibi dikkat etmemiz gereken nokta, komutta vereceğimiz repository id’si ile /etc/maven/settings.xml içinde vereceğimiz id aynı olmalı. *nexus-url* kısmına kendi Nexus url’inizi yazmalısınız.

Ek olarak Nexus üzerinde, releases deposunda göndermek istediğiniz artifact versiyonu bulunuyorsa bunu güncelleyemeyeceğinizi de not almalısınız. Bu yüzden aynı versiyon üzerinde güncelleme yapabilmek için snapshots deposunu kullanmalısınız.

Kullanım ile ilgili detaylı bilgiler için linkteki sayfayı ziyaret edebilirsiniz.

--

--