2012-05-15 3 views
5

Ich habe ein Nexus, das über HTTPS verfügbar ist. Nur autorisierte Benutzer haben Zugriffsrechte. Wenn Maven alle erforderlichen Artefakte im lokalen Repo-Modus verwendet, kann ich sogar Gebäudeartefakte einsetzen. Wenn ich jedoch einige der erforderlichen Artefakte aus dem lokalen Repository entferne, schlägt der Build fehl.Maven kann Artefakte von HTTPS Nexus mit obligatorischer Authentifizierung nicht herunterladen

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 

Es gibt die folgenden Inhalte in settings.xml meinen Benutzer:

<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> 

Wenn ich Artefakte aus diesem Nexus wget heruntergeladen, ich --no-Check-Zertifikatschlüssel hinzufügen musste Überspringen Sie das Serverzertifikat (weil es selbstsigniert ist), und danach konnte ich es mit wget herunterladen.

Ich fould Java-Schlüssel -Dsun.security.ssl.allowUnsafeRenegotiation = true, aber es hat überhaupt nichts geändert.

Danach fand ich, dass es vielleicht nicht ein selbst signiertes Zertifikat Problem, weil ich Serverzertifikat auf vertrauenswürdige Liste hinzugefügt habe mit dem Befehl:

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

Hat jemand eine Idee, wie ich Artefakte herunterladen von Nexus in der Bauzeit?

+0

Der russische Teil war ein bisschen hart :-) zu verstehen, aber haben Sie versucht, [diese Anleitung] (http: //maven.apache .org/guides/mini/guide-repository-ssl.html)? – Paaske

+0

Ich bin mir nicht sicher, ob der vorherige Kommentar deckt, was Sie brauchen. Wenn es nur darum geht, auf einem Server mit einem selbstsignierten Zertifikat auf das Repo zuzugreifen, sollte das Hinzufügen des Zertifikats zum Java-Keystore ausreichen. – Paaske

+0

Ich habe bereits eins hinzugefügt. Vielleicht nicht richtig. Wie kann ich überprüfen, ob das Zertifikat hinzugefügt wurde? Auch ich habe den Verkehr mit WireShark während der Verbindung mit Nexus analysiert, sehe ich Benachrichtigungspaket mit SSL-Content-Typ: Alert (21). –

Antwort

4

hatte ich

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

zu

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

zu ändern, in dem 'Nexus' Bezeichner meinem Spiegel in der Spitze der settings.xml ist.

-3

hinzufügen Wagen http leichte Erweiterung, Nizza Erklärung

Best solution to maven proxy configure

+1

Fügen Sie dem Text der Antwort einige Inhalte und Erklärungen hinzu, anstatt lediglich eine Verknüpfung zu einer anderen Website herzustellen, damit die Benutzer sie lesen können – Crowie

Verwandte Themen