2012-05-15 13 views
5

Ho un Nexus che è disponibile tramite HTTPS. Solo gli utenti autorizzati hanno i diritti per accedervi. Usando Maven, quando tutti gli artefatti necessari sono nel repository locale, potrei persino distribuire artefatti di costruzione. Ma quando rimuovo alcune delle risorse necessarie dal repository locale, la compilazione fallisce.Maven non può scaricare artefatti da HTTPS Nexus con autenticazione obbligatoria

Downloading: https://example.com/nexus/content/groups/all/org/springframework/spring-test-mvc/1.0.0.BUILD-SNAPSHOT/spring-test-mvc-1.0.0.BUILD-SNAPSHOT.pom 
[INFO] ------------------------------------------------------------------------ 
[INFO] Reactor Summary: 
[INFO] 
[INFO] example - project1 ..................................... SUCCESS [0.500s] 
[INFO] example - project2 ..................................... FAILURE [2.951s] 
[INFO] example - project3 ...................................... SKIPPED 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 3.599s 
[INFO] Finished at: Tue May 15 13:58:13 EEST 2012 
[INFO] Final Memory: 6M/121M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal on project example - project2: Could not resolve dependencies for project com.example:example-project:jar:1.2.0-SNAPSHOT: Failed to collect dependencies for [com.example:example-project:jar:1.2.0-SNAPSHOT (compile), org.springframework:spring-beans:jar:3.1.1.RELEASE (compile), org.springframework:spring-context:jar:3.1.1.RELEASE (compile), org.springframework:spring-core:jar:3.1.1.RELEASE (compile), org.springframework:spring-test:jar:3.1.1.RELEASE (test), org.springframework:spring-web:jar:3.1.1.RELEASE (compile), org.apache.httpcomponents:httpclient:jar:4.1.1 (test), org.codehaus.jackson:jackson-mapper-asl:jar:1.9.6 (compile), org.springframework:spring-test-mvc:jar:1.0.0.BUILD-SNAPSHOT (test), junit:junit:jar:4.10 (test), org.mockito:mockito-all:jar:1.9.0 (test), org.hamcrest:hamcrest-all:jar:1.1 (compile), org.slf4j:slf4j-api:jar:1.6.1 (compile), org.slf4j:slf4j-log4j12:jar:1.6.1 (compile), log4j:log4j:jar:1.2.16 (compile), log4j:apache-log4j-extras:jar:1.1 (compile)]: Failed to read artifact descriptor for org.springframework:spring-test-mvc:jar:1.0.0.BUILD-SNAPSHOT: Could not transfer artifact org.springframework:spring-test-mvc:pom:1.0.0.BUILD-SNAPSHOT from/to nexus (https://example.com/nexus/content/groups/all): Not authorized, ReasonPhrase:Unauthorized. -> [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 
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command 
[ERROR] mvn <goals> -rf :grc-webclient-services 

V'è il seguente contenuto in settings.xml del mio utente:

<settings> 
<pluginGroups> 
    </pluginGroups> 
    <proxies> 
    </proxies> 
    <mirrors> 
     <mirror> 
     <id>nexus</id> 
     <mirrorOf>*</mirrorOf> 
     <url>https://example.com/nexus/content/groups/all</url> 
     </mirror> 
    </mirrors> 

    <profiles> 
     <profile> 

      <id>nexus</id> 

      <properties> 
       <sonar.jdbc.url>jdbc:mysql://localhost:3306/sonardb?useUnicode=true&amp;characterEncoding=utf8</sonar.jdbc.url> 
       <sonar.jdbc.driverClassName>com.mysql.jdbc.Driver</sonar.jdbc.driverClassName> 
       <sonar.jdbc.username>sonarusername</sonar.jdbc.username> 
       <sonar.jdbc.password>sonarpw</sonar.jdbc.password> 
       <sonar.host.url>http://localhost:9000/</sonar.host.url> 
      </properties> 


      <repositories> 
       <repository> 
        <id>central</id> 
        <url>https://example.com/nexus/content/groups/all</url> 
        <releases><enabled>true</enabled></releases> 
        <snapshots><enabled>true</enabled></snapshots> 
       </repository> 
      </repositories> 
      <pluginRepositories> 
       <pluginRepository> 
        <id>central</id> 
        <url>https://example.com/nexus/content/groups/all</url> 
        <releases><enabled>true</enabled></releases> 
        <snapshots><enabled>true</enabled></snapshots> 
       </pluginRepository> 
      </pluginRepositories> 

     </profile> 
    </profiles> 

    <servers> 
     <server> 
      <id>all</id> 
      <username>user</username> 
      <password>pw</password> 
     </server> 
     <server> 
      <id>releases</id> 
      <username>user</username> 
      <password>pw</password> 
     </server> 
     <server> 
      <id>snapshots</id> 
      <username>user</username> 
      <password>pw</password> 
     </server> 
    </servers> 

    <activeProfiles> 
     <activeProfile>nexus</activeProfile> 
    </activeProfiles> 

</settings> 

Quando ho scaricato manufatti di questo Nexus utilizzando wget, ho dovuto aggiungere --no check-certificato di chiave a salta il certificato del server (perché è autofirmato), dopodiché potrei scaricarlo usando wget.

Ho la chiave Java -Dsun.security.ssl.allowUnsafeRenegotiation = true, ma non ha cambiato nulla.

Dopo di che ho trovato che non è forse un self-signed problema del certificato perche' ho aggiunto il certificato del server alla lista di fiducia con il comando:

keytool -keystore $JAVA_HOME/jre/lib/security/cacerts -import -file certificate.cer 

Qualcuno ha un'idea di come posso scaricare gli artefatti da Nexus in fase di costruzione?

+0

La parte russa è stato un po 'difficile da capire :-) Ma avete provato [questa guida] (http: //maven.apache .org/guide/mini/guida-repository-ssl.html)? – Paaske

+0

Non sono sicuro che il commento precedente riguardi ciò di cui hai bisogno. Se si tratta solo di accedere al repository su un server con un certificato autofirmato, aggiungere il certificato al keystore Java dovrebbe essere sufficiente. – Paaske

+0

Ne ho già aggiunto uno. Forse non nel modo corretto. Come posso verificare che il certificato sia stato aggiunto? Inoltre ho analizzato il traffico usando WireShark durante la connessione a Nexus, vedo il pacchetto Encription Alert con SSL Content-type: Alert (21). –

risposta

4

ho dovuto cambiare

<server> 
     <id>all</id> 
     <username>user</username> 
     <password>pw</password> 
    </server> 

a

<server> 
     <id>nexus</id> 
     <username>user</username> 
     <password>pw</password> 
    </server> 

dove 'Nexus' è identificativo del mio specchio nella parte superiore del settings.xml.

-3

Aggiungere carro-http-leggera estensione, bella spiegazione

Best solution to maven proxy configure

+1

Si prega di aggiungere alcuni contenuti e spiegazioni al corpo della risposta piuttosto che limitarsi a collegarsi a un altro sito per consentire agli utenti di leggere – Crowie

Problemi correlati