Domanda

di recente ho scaricato alcuni maven manufatti direttamente al mio repository locale (.m2/repository).Ora ho installato il Nexus Repository Manager e la necessità di riempire il suo deposito senza scaricare tutti i manufatti di nuovo.C'è un modo per aggiornare il Nexus repository con il locale.Non voglio semplicemente copia di loro, perché i Nexus separato artefatti che riguardano il loro server pubblici (centrale, codehaus, etc.) e la locale struttura del repository non.

Aggiornamento:Nel frattempo ho copiato i manufatti dal repository locale per il Nexus deposito (repository pubblico).Sono in grado di navigare per i manufatti via il Nexus webapp, ma Maven, in qualche modo, non può risolvere i manufatti da Nexus.Mi devo registrare di loro in particolare?Ho ri-indicizzato il repository pubblico e riavviato il Nexus più volte senza cambiamenti.

È stato utile?

Soluzione

Nexus ha diversi tipi di repository: ospitato repository (quelli che veramente memorizzare maven artefatti), proxy repository (che reindirizzare il traffico verso altri repository remoti quando un artefatto è richiesto), virtual repository (un semplice adattatore di maven1 repository [al di fuori dell'ambito di questa domanda]).si può anche creare repository gruppi che può servire artefatti da tutti i suoi aggregati (il public repository è uno di questi).

Inoltre, nexus divide i loro depositi in base alla sua politica di pubblicazione in istantanee e rilascia.L'ex memorizza solo snapshot manufatti;mentre il secondo, in teoria, in grado di memorizzare sia le istantanee e rilascia, ma in realtà si comporta buggy quando il repo è molto grande e contiene istantanee.

Al fine di ospitare i vostri manufatti che avete bisogno di:

Primo: Dividere il tuo repository locale in due:uno contenente le istantanee, e un altro contenente le versioni.Nexus repository di conversione strumento vi aiuterà se il repo è molto grande:

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

Una volta scaricato la si può solo eseguire java -jar nexus-repository-conversion-tool-1.8.0.1-cli.jar -rSource -oTarget dove Source è la directory che contiene il repository locale per passare al nexus, e Target è un esistente, vuoto e scrivibile directory in cui la conversione strumento di lasciare scomponibile repository.A condizione che la directory di origine è repository e Target temp, creare temp/repository-snapshots e temp/repository-releases le directory.

Secondo: spostare il vostro diviso operazioni pronti contro termine nexus.E lasciarli in ${NEXUS_HOME}/sonatype-work/nexus/storage, o dovunque il vostro nexus installazione è configurato per memorizzare i dati sulle negoziazioni.

Terzo: creare due ospitato repository con lo stesso id di repo è spostato nella seconda fase.(nell'esempio repository-snapshots e repository-releases)

Se la vostra repo sarebbe solo contenuti versioni, la tua soluzione potrebbe avere lavorato, ma si avrà commesso un altro errore.Sebbene il nexus negozi di manufatti per ogni deposito, lo stoccaggio di coloro che non sono ospitati repos è solo per il caching (come nel caso del public repository), si avrebbe la possibilità di copiare il contenuto di una ospitato uno per lavoro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top