2010-11-22 11 views
9

Kısa süre önce bazı maven eserlerini doğrudan yerel depoya (.m2/deposu) yükledim. Artık Nexus Deposu Yöneticisi'ni kurdum ve tüm eserleri tekrar indirmeden depolama alanını doldurması gerekiyor. Nexus deposunu yerel olanla güncellemenin bir yolu var mı? Nexus'un ortak sunucuları (merkezi, kod kümesi vb.) Ve yerel depo yapısıyla ilgili ayrı dosyaları olmadığı için bunları kopyalamak istemiyorum.Yerel eserler ile Nexus deposunu güncelle

Güncelleme: Bu esnada, eserleri yerel depodan Nexus deposuna (kamu deposu) kopyaladım. Nexus webapp aracılığıyla esere göz atabilirim, ancak Maven bir şekilde Nexus'tan eserleri çözemez. Özellikle kaydetmem gerekiyor mu? Genel depoyu yeniden indeksledim ve Nexus'u birden çok kez yeniden başlattım - değişiklik yok.

cevap

13

Nexus çeşitli depo türü vardır: (gerçekten maven eserler saklamak olanlar) depoları barındırılan (bir obje istendiğinde diğer uzak havuzlarına trafiği yönlendirmek) vekil depoları, sanal depoları (sadece maven1 depolarının adaptörü [bu sorunun kapsamı dışında]). Ayrıca, herhangi bir kümesinden (public deposu bunlardan biri olan) herhangi birinden yapay nesneler sunabilen veri havuzu grupları oluşturabilir. Ayrıca

, nexus anlık ve bültenleri içine yayın politikasına göre kendi depoları böler. Eski sadece enstantane eserler depolar; ikincisi, teorik olarak, hem anlık görüntüleri hem de yayınları depolayabilirken, repo çok büyük olduğunda ve enstantane içerdiğinde, aslında buggy davranır. senin eserler barındırmak amacıyla

yapmanız gerekenler:

Öncelikle: ikiye yerel depo bölün: anlık içeren bir, ve bültenleri içeren başka. senin Repo çok büyük Nexus depo dönüşüm aracı size yardımcı olacaktır:

<dependency> 
     <groupId>org.sonatype.nexus.tools</groupId> 
     <artifactId>nexus-repository-conversion-tool</artifactId> 
     <version>1.8.0.1</version> 
     <classifier>cli</classifier> 
    </dependency> 

kez Source nexus geçmek için yerel depoyu içeren dizindir ve Target varolan boş olduğu sadece java -jar nexus-repository-conversion-tool-1.8.0.1-cli.jar -rSource -oTarget yürütebileceği downlaoded ve dönüştürülebilir aracın bölünmüş depolardan ayrılacağı yazılabilir dizin. Kaynak dizini repository ve Hedef temp olduğu sürece, temp/repository-snapshots ve temp/repository-releases dizinleri oluşturur.

İkinci: bölünmüş dosyalarınızı nexus'a taşıyın. Ve onları ${NEXUS_HOME}/sonatype-work/nexus/storage'da bırakın veya nexus kurulumunuz depoları depolamak için yapılandırılmışsa nerede olursunuz.

Üçüncüsü: ikinci adımda taşındı repo gibi aynı kimliğe sahip iki barındırılan depoları oluşturun. (örnekte repository-snapshots ve repository-releases)

Repo'nuz yalnızca sürümler içeriyorsa, çözümünüz işe yarayabilirdi, ancak başka bir hata yapmış olursunuz.Nexus her depo için eserler depolamasına rağmen, barındırılan reposun bulunmadığı depoların depolanması sadece önbellekleme amaçlıdır (public deposunda olduğu gibi), çalışmak için içeriğinizi barındırılan bir bilgisayara kopyalamanız gerekir.

+0

Ayrıca, deponuzda ne tür artıkları barındırdığınızı da göz önünde bulundurmalısınız. Nexus, depoları yayılma görüntülerine ayırır ve anlık görüntü eserlerine veya sürüm + anlık görüntülerine sahip olmasına bağlı olarak yayınlar. – Miguel

+0

Oh olmasına rağmen, cevabınızı çok geç okudum. Yaklaşımın bana çok zaman kazandıracak sanırım. Ayrıca, anlık görüntüyü ayırdım ve yapay nesneleri serbest bıraktım ve ardından bunları ilgili Nexus depolarına el ile taşıdım. Bir şekilde her yayın nesnesini klibi kullanarak dağıtmak zorunda kaldım. Anlık görüntüler için Nexus önbelleğini yeniden endekslemek yeterliydi. Teşekkürler! – mamuesstack