2013-06-30 24 views
9

Recentemente sono migrato da Archiva a Sonatype Nexus.Nexus: Impossibile trovare artefatto

Sto cercando di utilizzare Jars da repository di terze parti e Nexus non lo memorizza nel repository locale.

Ho cercato risposte in questa sezione e non è riuscito a rispondere alla domanda.

Ecco quello che ho fatto ...

sto usando settings.xml:

<settings> 
    <mirrors> 
    <mirror> 
     <!--This sends everything else to /public --> 
     <id>nexus</id> 
     <mirrorOf>*</mirrorOf> 
     <url>http://THE_URL:8080/nexus/content/groups/public</url> 
    </mirror> 
    </mirrors> 
    <servers> 
    <server> 
     <id>admin</id> 
     <username>user</username> 
     <password>password</password> 
    </server> 
    </servers> 
    <profiles> 
    <profile> 
     <id>nexus</id> 
     <!--Enable snapshots for the built in central repo to direct --> 
     <!--all requests to nexus via the mirror --> 
     <repositories> 

     <repository> 
      <id>central</id> 
      <url>http://central</url> 
      <releases><enabled>true</enabled></releases> 
      <snapshots><enabled>true</enabled></snapshots> 
     </repository> 

     </repositories> 
    <pluginRepositories> 
     <pluginRepository> 
      <id>central</id> 
      <url>http://central</url> 
      <releases><enabled>true</enabled></releases> 
      <snapshots><enabled>true</enabled></snapshots> 
     </pluginRepository> 
     </pluginRepositories> 
    </profile> 
    </profiles> 
    <activeProfiles> 
    <!--make the profile active all the time --> 
    <activeProfile>nexus</activeProfile> 
    </activeProfiles> 

</settings> 

Ho anche creato repository proxy per tutti i repository 3rd party che sto usando, e AGGIUNTA AL GRUPPO PUBBLICO NEXUS.

Avanti, ho eseguito il comando:

mvn clean install 

ed ha ottenuto il seguente errore:

[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building shlang 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
Downloading: http://THE_URL:8080/nexus/content/groups/public/com/shadow/shadow/1/shadow-1.pom 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 6.341s 
[INFO] Finished at: Sun Jun 30 11:59:42 IDT 2013 
[INFO] Final Memory: 6M/120M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal on project shlang: Could not resolve dependencies for project com.shadow:shlang:jar:1.0-SNAPSHOT: Failed to collect dependencies for [couchbase:couchbase-client:jar:1.1.5 (compile), com.google.code.gson:gson:pom:2.2.2 (compile), org.json:json:jar:20090211 (compile), net.sf.json-lib:json-lib:jar:jdk15:2.4 (compile), jline:jline:jar:2.10 (compile), commons-validator:commons-validator:jar:1.4.0 (compile), spy:spymemcached:jar:2.8.1 (compile), com.shadow:util:jar:1.0.1 (compile), com.shadow:monkey_schoolyard:jar:1.0.0 (compile)]: Failed to read artifact descriptor for com.shadow:util:jar:1.0.1: Could not find artifact com.shadow:shadow:pom:1 in nexus (http://THE_URL:8080/nexus/content/groups/public) -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException 

Il risultato nel repository locale, è che esso non conteneva alcuna della 3a parte barattoli dovrebbe

Cosa mi manca qui?

+0

Hai configurato il gruppo di repository "pubblico" come un mirror di "*". Ciò significa che è l'URL goto per tutti i tuoi artefatti Maven. Tutti gli artefatti che stai cercando di recuperare possono essere ottenuti da quell'URL del gruppo? Sto indovinando no. –

+1

Sembrava che manchi il repository per l'artefatto 'couchbase-client' che non si trova in Maven central. Quindi devi cambiare la configurazione per il tuo repository pubblico, il che significa aggiungere il repository che contiene le dipendenze di cui sopra. – khmarbaise

+0

Possibile duplicato di [Maven Non è stato possibile risolvere le dipendenze, gli artefatti non possono essere risolti] (http://stackoverflow.com/questions/4650460/maven-could-not-resolve-dependencies-artifacts-could-non-be-resolved) – naXa

risposta

6

Molto probabilmente il repository Maven locale ha il fatto che il componente non può essere trovato nella cache. È possibile forzare Maven a verificare la presenza di aggiornamenti delle versioni di istantanee e l'esistenza di versioni non trovate in precedenza con il flag -U.

Così gestita

mvn clean install -U 

A volte, se cosa sono davvero strano può aiutare a cancellare completamente la rispettiva struttura delle cartelle nel repository locale. Quindi nel tuo esempio

rm -rf ~/.m2/repository/com/shadow/ 
2

Se la soluzione di Manfred non funziona per voi, allora il problema sarà con Nexus provare a risolvere il manufatto.

Se si utilizza un browser, è possibile verificare cosa sta effettivamente facendo Nexus per individuare l'artefatto desiderato.

Append ? Descrivere nell'URL del repository Nexus con il percorso del manufatto.

E.g. Nexus Repository pubblico Repository URL: http://my.nexus.server.address:8081/nexus/content/groups/public/

Recupero del manufatto

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.7.5</version> 
</dependency> 

Percorso del manufatto di cui sopra sarebbe: org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5 .JAR

Così l'URL completo per controllare

http://my.nexus.server.address:8081/nexus/content/groups/public/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar?describe

Questo processo sarà quindi procedere attraverso la lista dei repository configurati sotto il vostro gruppo pubblico repository nell'ordine in cui i repository sono specificati, indicando il motivo per cui un repository è stato in grado per fornire l'artefatto richiesto.

La maggior parte dei motivi è piuttosto auto-esplicativa e può essere ignorata.

Un motivo che può essere di interesse è quando l'errore è ancora memorizzato nella cache come non trovato per il repository viene recuperato per un repository.

Ciò indica che a un certo punto Nexus ha tentato di recuperare l'artefatto e non è riuscito a individuarlo.

Questo stato sembra essere memorizzate nella cache all'interno di Nexus, in modo che il modo più rapido per pulire la cache è di riavvio Nexus.

Problemi correlati