2013-01-15 18 views
20

Yerel makineme nexus yükledim. Pom dosyamın bu repoya işaret etmesini istiyorum. Özel depolamamı pom.xml dosyasına nasıl ekleyebilirim? indirme ve dağıtım için Apache Maven sitemaven nexus repo'yu pomm.xml dosyasına ekleme

<project> 
    ... 
    <repositories> 
    <repository> 
     <id>my-internal-site</id> 
     <url>http://myserver/repo</url> 
    </repository> 
    </repositories> 
    ... 
</project> 

"Depoda itibaren

cevap

23

POM repositories ve distributionManagement elemanları tarafından tanımlanır. Ancak, kullanıcı adı ve şifre gibi belirli ayarlar pom.xml ile birlikte dağıtılmamalıdır. Bu tür bilgi, settings.xml dosyasındaki derleme sunucusunda bulunmalıdır.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
        http://maven.apache.org/xsd/settings-1.0.0.xsd"> 
    ... 
    <servers> 
    <server> 
     <id>server001</id> 
     <username>my_login</username> 
     <password>my_password</password> 
     <privateKey>${user.home}/.ssh/id_dsa</privateKey> 
     <passphrase>some_passphrase</passphrase> 
     <filePermissions>664</filePermissions> 
     <directoryPermissions>775</directoryPermissions> 
     <configuration></configuration> 
    </server> 
    </servers> 
    ... 
</settings> 

id

: Bu Maven'in bağlanmaya çalıştığında depo/aynanın id elemanı maçları (ile giriş yapmanız değil, kullanıcının) sunucusunun kimliğidir.

kullanıcı adı, parola: Bu öğeler, bu sunucuya kimlik doğrulama yapmak için gereken oturum açma ve parolayı belirten bir çift olarak görünür.

privateKey, parola: Önceki iki elemanlar gibi bu çifti gerekirse bir özel anahtar için bir yol (varsayılan ${user.home}/.ssh/id_dsa olan) ve bir parola belirtir. Parola ve parola öğeleri gelecekte dışa aktarılabilir, ancak şimdilik settings.xml dosyasında düz metin olarak ayarlanmaları gerekir.

filePermissions, directoryPermissions: Dağıtımda bir depo dosyası veya dizin oluşturulduğunda, bunlar kullanım izinleridir. Her birinin yasal değerleri, * nix dosya izinlerine yönelik bir üç basamaklı sayıdır. 664 veya 775.

Not: Sunucuya giriş yapmak için özel bir anahtar kullanırsanız, öğeyi atladığınızdan emin olun. Aksi halde, anahtar göz ardı edilir.

İhtiyacınız gereken tüm

id, username ve

password olduğunu id ve URL bu gibi pom.xml tanımlanması gerektiğini:

<repositories> 
    ... 
    <repository> 
     <id>acme-nexus-releases</id> 
     <name>acme nexus</name> 
     <url>https://nexus.acme.net/content/repositories/releases</url> 
    </repository> 
    ... 
</repositories> 

Eğer bir kullanıcı adı ve parola gerekiyorsa senin Sunucu, şifrelemelisiniz. Maven Password Encryption

4

depoları ve POM distributionManagement elemanları tarafından tanımlanır. Ancak, bu tür kullanıcı adı ve şifre gibi bazı ayarlar ile birlikte dağıtılan edilmemelidir pom.xml. Bu tür bilgi, settings.xml dosyasındaki derleme sunucusunda mevcut olmalıdır. " - maven setting reference itibaren Apache Maven site - settings reference

<servers> 
    <server> 
     <id>server001</id> 
     <username>my_login</username> 
     <password>my_password</password> 
     <privateKey>${user.home}/.ssh/id_dsa</privateKey> 
     <passphrase>some_passphrase</passphrase> 
     <filePermissions>664</filePermissions> 
     <directoryPermissions>775</directoryPermissions> 
     <configuration></configuration> 
    </server> 
</servers> 
2

, Eğer arşivlerden ve POM distributionManagement elemanları tarafından tanımlanır indirme ve dağıtım için bir pom.xml'Bu

depoları kullanıcı adı/şifre koyamazsınız. Ancak, kullanıcı adı ve şifre gibi belirli ayarlar pom.xml ile birlikte dağıtılmamalıdır. Bu tür bilgi, settings.xml dosyasındaki derleme sunucusunda bulunmalıdır.

Öncelikle pom bir depo ekleyin ve sonra $ MAVEN_HOME/conf/settings.xml içinde kullanıcı adı/şifre ekleyebilirsiniz: Çok okuma tavsiye edebilir tüm

<servers> 
    <server> 
     <id>my-internal-site</id> 
     <username>yourUsername</username> 
     <password>yourPassword</password> 
    </server> 
    </servers> 
+0

Değil doğru. Bunu POM'unuza veya settings.xml dosyanıza koyabilirsiniz. Birinin koyması gerekip gerekmediği, özel kullanım durumuyla ilgili bir görüş meselesi. "Yapamaz" ifadesi, Maven Ayarları Referansına fikir vermektir. – ingyhere

9

Birinci Nexus book. Maven depo yöneticisi kullanmanın yararlarını açıklayacaktır. Bu, POM dosyası değiştirerek neden sorgulamaya götürüyor

:

Nexus kullanmak için Maven yapı yapılandırmak için nasıl bir bölüm vardır? Gerçekten ne yapmak istediğinizden şüpheleniyorsanız, Nexus'u uzak bir veri havuzu olarak ayarlayın. Bu Maven ayarları dosyanızda yapılır. Aşağıdaki

Maven yapı için iyi olan Nexus deposu Orta (alınan önbellek eserler için yapılandırıldı beri

<settings> 
    .. 
    .. 
    <mirrors> 
    <mirror> 
     <id>nexus</id> 
     <url>http://localhost:8081/nexus/content/groups/public</url> 
     <mirrorOf>central</mirrorOf> 
    </mirror> 
    </mirrors> 

Bu davranış isteniyorsa (Yerine Maven Central arasında) varsayılan havuzu olarak Nexus kullanmak söyler performans).

Not: "kamu" depo grubu Nexus örneği (Sadece Maven Merkez) tarafından proxy diğer depoları içerebilir

  • . Tüm depo yönetimini merkezileştirdiği için bu davranışı dilediğiniz gibi kullanabilirsiniz. Sadece kuruluşunuzun dışındaki kişiler için daha az taşınabilir yapı sağlar.Maven - Settings Reference

    indirme ve dağıtım için depoları itibaren

5

Buradaki yanıtlar, bir Nexus sunucusunun birden çok kullanıcısı olduğu ve kullanıcı kimliği ALONG tabanlı bir otomatik yapı (CI) sistemi kullanarak proje tabanlı yalıtım (koruma) içeren bir kuruluş kullanım durumunu desteklemiyor gibi görünüyor. . Farklı projeler için gereken farklı kullanıcı kimliklerini karşılamak için bir settings.xml dosyası oluşturamazsınız. Projelerin, projeye özgü bir genel kullanıcı kimliğini pom.xml'lerinde depolayamadığı sürece, Nexus'u okuma depoları için anonim erişime açmak dışında bunu nasıl çözeceğimi bilmiyorum. İstemediğiniz veya settings.xml dosyasını değiştirmek yapamıyorsanız

+0

+1 - Doğru.Sayfadaki diğer yorumlar kutunun dışında düşünmüyor veya belgeleri tamamen yanlış anlamıyor. – ingyhere

+0

@ kevin-buchs neden proje başına bir _settings.xml_ dosyası oluşturmuyorsunuz ve açıkça _mvn clean install -s projectA-settings.xml_? – ajeans

1

, kendi kök projesinde yeni bir tane oluşturun ve -s parametresi olan bir parametre olarak geçirerek maven arayabilirsiniz: ille

$ mvn COMMAND ... -s settings.xml