Ich habe fast gesamten Stackoverflow, Apache Websites und alle recherchierten ich an einem Tag tun konnte, konnte aber nicht verwalten diese Funktion zu erhalten.
Ich habe Maven 3.0.5
mit Jdk8
Setup (die für bestimmte Stapel ist, und Versionen werden nicht überarbeitet werden) innerhalb einer Vagrant Umgebung. Ich bin bewusst Apache
‚s Entscheidung , alle der Maven - Repositories nur HTTPS verwenden zu zwingen, sonst Maven Clients nicht auf Repository - Server sprechen.
Scheint , wie ich alle notwendigen Einstellungen in meinem konfiguriert haben ~/.m2/settings.xml
und für einige sehr seltsamen Grund, wenn ich einen Befehl ausführen (jede Build - Phase, sagen mvn clean
), Maven standardmäßig HTTP und nicht über settings.xml schert - es immer noch versucht, Download Referenzen / Abhängigkeiten mit HTTP - Protokoll.
Beispiel meiner settings.xml
(Der Einfachheit halber habe ich entfernt bestimmte Dinge Projekt und nur diese verlassen, funktioniert es nicht einmal mit diesem)
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<repositories>
<repository>
<id>central</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
<repository>
<id>central</id>
<url>https://repo.maven.apache.org/maven2/</url>
</repository>
</repositories>
und hier ist das, was ich für den Test Befehl bekommen mvn archetype:generate
(das Problem ist persistent für andere Build - Phase - Befehle)
[INFO] Scannen für Projekte ... Herunterladen: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom [WARNUNG] Fehler Plugin - Descriptor für org.apache.maven.plugins abzurufen: maven-clean-Plugin: 2,5: Plugin org.apache.maven.plugins: maven-clean-Plugin: 2.5 oder eine ihrer Abhängigkeiten nicht aufgelöst werden konnte fehlgeschlagen Artefakt - Descriptor für org.apache.maven.plugins zu lesen: maven-clean-Plugin: jar: 2.5 Herunterladen: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven- install-plugin / 2.3 / maven-install-plugin-2.3.pom[WARNUNG] Fehler Plugin - Descriptor für org.apache.maven.plugins abzurufen: Maven-install-Plugin: 2,3: org.apache.maven.plugins Plugin: maven-install-Plugin: 2.3 oder eine ihrer Abhängigkeiten nicht aufgelöst werden konnte fehlgeschlagen Artefakt - Descriptor für org.apache.maven.plugins zu lesen: maven-install-Plugin: jar: 2.3 Herunterladen: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven- Bereitstellen-Plugin / 2.7 / maven implementierende-Plugin-2.7.pom [WARNUNG] Plugin - Deskriptor für org.apache.maven.plugins abzurufen fehlgeschlagen: maven-deploy-Plugin: 2.7: org.apache.maven.plugins Plugin: maven -Bereitstellung-Plugin: 2.7 oder eine ihrer Abhängigkeiten konnte nicht aufgelöst werden: Fehler Artefakt - Descriptor für org.apache.maven.plugins zu lesen: maven-deploy-Plugin: jar: 2.7 Herunterladen:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-site-plugin/3.0/maven-site-plugin-3.0.pom [WARNUNG] Fehler beim Plugin - Descriptor abrufen für org. apache.maven.plugins: maven-Ort-Plugin: 3,0: Plugin org.apache.maven.plugins: maven-site-Plugin: 3.0 oder eine ihrer Abhängigkeiten nicht aufgelöst werden kann: Fehler Artefakt - Descriptor für org.apache zu lesen. maven.plugins: maven-site-Plugin: jar: 3.0 Herunterladen: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-antrun-plugin/1.3/maven-antrun-plugin -1.3.pom[WARNUNG] Fehler Plugin - Descriptor für org.apache.maven.plugins abzurufen: maven-antrun-Plugin: 1.3: Plugin org.apache.maven.plugins: maven-antrun-Plugin: 1.3 oder eine ihrer Abhängigkeiten nicht aufgelöst werden konnte fehlgeschlagen Artefakt - Descriptor für org.apache.maven.plugins zu lesen: maven-antrun-Plugin: jar: 1.3 Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven- Montage-Plugin / 2,2-beta-5 / maven-Montage-plugin-2,2-beta-5.pom [WARNUNG] Fehler beim Plugin - Descriptor abrufen für org.apache.maven.plugins: maven-Montage-Plugin: 2,2-beta- 5: Plugin org.apache.maven.plugins: maven-Montage-Plugin: 2,2-beta-5 oder eine ihrer Abhängigkeiten nicht aufgelöst werden kann: Fehler Artefakt - Descriptor für org.apache.maven.plugins zu lesen: maven-montage- Plugin: jar: 2,2-beta-5 Herunterladen:http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-dependency-plugin/2.1/maven-dependency-plugin-2.1.pom [WARNUNG] Fehler beim Plugin - Descriptor abrufen für org. apache.maven.plugins: maven-Abhängigkeit-Plugin: 2.1: Plugin org.apache.maven.plugins: maven-Abhängigkeit-Plugin 2.1 oder eine ihrer Abhängigkeiten nicht aufgelöst werden kann: Fehler Artefakt - Descriptor für org.apache zu lesen. maven.plugins: maven-Abhängigkeit-Plugin: jar: 2.1 Downloaden: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-release-plugin/2.0/maven-release-plugin -2.0.pom[WARNUNG] Fehler Plugin - Descriptor für org.apache.maven.plugins abzurufen: maven-Release-Plugin: 2,0: Plugin org.apache.maven.plugins: maven-Release-Plugin: 2.0 oder eine ihrer Abhängigkeiten nicht aufgelöst werden konnte : Fehler Artefakt - Descriptor für org.apache.maven.plugins zu lesen: maven-Release-Plugin: jar: 2.0 Downloaden: http://repo.maven.apache.org/maven2/org/codehaus/mojo/maven-metadata. xml Herunterladen: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml [WARNUNG] kann nicht übertragen Metadaten org.apache.maven.plugins / maven-metadata.xml an / von ( http://repo.maven.apache.org/maven2 ): Fehler beim Transfer File: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata .xml. Return - Code ist: 501, ReasonPhrase: HTTPS Erforderlich. [WARNUNG] übertragen kann nicht Metadaten org.codehaus.mojo / Maven-metadata.xml vom / zum Zentrum ( http://repo.maven.apache.org/maven2 ): Fehler bei Transfer - Datei: http: //repo.maven .apache.org / maven2 / org / Codehaus / mojo / maven-metadata.xml . Return - Code ist: 501, ReasonPhrase: HTTPS Erforderlich. [WARNUNG] Die Nichtübertragung org.apache.maven.plugins / maven-metadata.xml von http://repo.maven.apache.org/maven2 im lokalen Repository zwischengespeichert wurde, Auflösung wird erst das Aktualisierungsintervall von erneut versucht werden , Zentral verstrichen ist oder Updates gezwungen werden. Original - Fehler: Kann nicht übertragen Metadaten org.apache.maven.plugins / Maven-metadata.xml vom / zum Zentrum ( http://repo.maven.apache.org/maven2): Zur Übertragung der Datei fehlgeschlagen: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-metadata.xml . Return - Code ist: 501, ReasonPhrase: HTTPS Erforderlich. [WARNUNG] Die Nichtübertragung org.codehaus.mojo / Maven-metadata.xml von http://repo.maven.apache.org/maven2 im lokalen Repository zwischengespeichert wurde, die Auflösung wird nicht erneut versucht werden , bis das Aktualisierungsintervall von zentraler hat verstrichene oder Updates gezwungen werden. Original - Fehler: Kann nicht übertragen Metadaten org.codehaus.mojo / Maven-metadata.xml vom / zum Zentrum ( http://repo.maven.apache.org/maven2 ): Fehler bei Transfer - Datei: http: //repo.maven .apache.org / maven2 / org / Codehaus / mojo / maven-metadata.xml . Return - Code ist: 501, ReasonPhrase: HTTPS Erforderlich .
Was soll ich tun? wie Sie sehen, auf HTTP, erhalte ich entsprechend HTTP 501.
Als ich den ganzen Tag mit diesem verbracht haben, ich glaube, es lohnt sich die Erfahrung, die Ergebnisse der Fehlersuche und die Art und Weise der Lösung dieses Problems zu teilen.
Es gab zwei Probleme:
1) [WARNUNG] Fehler beim Plugin - Descriptor abrufen für .. (was auch immer Plugin Namen) Warnungen während fast jeder Aufbauphase (sauber, Paket oder etc.), die besagt , dass (wichtig >>) Abruf von Deskriptoren oder seine Abhängigkeiten Plugin ( was bedeutet , Plug - in und nicht die Projektabhängigkeiten !) wird nicht erfolgreich.
Grund hierfür (in diesem Fall) ist , dass Maven Versuche mit einer End-Punkt - Maschine (Repository) über die Kommunikation HTTP (wie Sie in der Frage des Zitat sehen), trotz der Tatsache , (!), Dass ich meine Konfiguration angepasst habe .m2\settings.xml
Datei und alle Repository Definition Einträge definiert sind , mit HTTPS bzw. sollte scheint , wie maven alles über versuchen , HTTPS ..aber nein, es verwendet HTTP für Plug - Ins und jede HTTP - Kommunikation mit maven Repositories ist seit dem 15. Januar 2020 verboten .
Die Art , wie ich dieses Problem gelöst ist zu definieren und zu konfigurieren <profiles/>
und <pluginRepositories/>
wie vorgeschlagen @carlspring , aber ich hatte zu dieser Antwort etwas zu erarbeiten und zu erweitern. So, hier ist mein bereit settings.xml
Beispiel: (beachten Sie , dass nur um sicher zu sein, habe ich zur Verfügung gestellt alternative Repositories in beide - Profile und Repositories)
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" $ xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
https://maven.apache.org/xsd/settings-1.0.0.xsd">
<profiles>
<profile>
<id>ssl-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<repositories>
<repository>
<id>central-1</id>
<url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central-2</id>
<url>https://repo1.maven.org/maven2</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<repositories>
<repository>
<id>central1</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
<repository>
<id>central2</id>
<url>https://repo.maven.apache.org/maven2/</url>
</repository>
</repositories>
</profiles>
</settings>
Nachdem dieses Problem gelöst wurde, und schließlich maven nahm diese Konfiguration und begann zu allen Repositories über zu versuchen , eine Verbindung HTTPS , hatte ich ein anderes - 2. Problem.
2) Peer nicht authentifizierte , gefolgt von Return - Code ist: 501, ReasonPhrase: HTTPS Erforderlich.
Das war ein bisschen schwierig, aber die Art und Weise , dies zu lösen , ist mit truststore spielen cacerts
Datei. Prüfen Sie zunächst, ob Sie trusts Datei haben cacerts
und ob es leer ist oder nicht! es darf nicht leer sein und das ist sehr wichtig. Scheint , wie in OpenJDK11
und einige andere baut in einigen Windows / Linux - Distributionen, cacerts
Datei entweder fehlt oder ist leer; aber nach meiner Beobachtung, es war in OracleJDK
aufbaut.
- Auf
Windows
baut, sollte es unter sein%JAVA_HOME%\lib\security\
; - Unter Linux baut, kann es (je nach Linux - Distribution und Ihrem Setup) variiert, aber in meinem Fall war es unter
/etc/ssl/certs
(und ich denke , dass Linux - Zertifikate Ordner, nicht besonders Java eins).
Wenn Sie sehen (und Sie sehen wahrscheinlich, wenn Sie dies haben Peer nicht authentifiziert Problem) , dass Sie entweder nicht haben keine cacerts
Datei oder es ist leer (einfach die Dateigröße überprüfen, sollte es größer als wenige Bits sein), können Sie entweder:
- Kopieren Sie einfach-Paste bestehende
cacerts
aus einem anderen Jdk / jre - Build - Datei; - Generieren Sie eine
cacerts
Vertrauensspeicherdatei und fügen Sie Zertifikat (n) es (in diesem Fall, müssen Sie so viele Zertifikate hinzufügen , wie Sie benötigen, so ist es vielleicht leichter zu gehen mit nur copy-paste)
Ich hoffe das hilft.