Ostatnio zadania kompilacji Maven działające w Jenkins kończą się niepowodzeniem, z poniższym wyjątkiem, że nie mogą pobrać zależności z Maven Central i powinny używać HTTPS . Nie jestem pewien, jak zmienić żądania z HTTP na HTTPS . Czy ktoś może mnie poprowadzić w tej sprawie?
[BŁĄD] Nie można rozwiązać rozszerzenia kompilacji:
wtyczkiorg.apache.maven.wagon:wagon-ssh:2.1
lub jednej z jej zależności nie można rozwiązać:
nie można zebrać zależności dlaorg.apache.maven.wagon:wagon-ssh:jar:2.1 ()
:
nie można odczytać deskryptora artefaktu dlaorg.apache.maven.wagon:wagon-ssh:jar:2.1
:
nie można przenieść artefaktuorg.apache.maven.wagon:wagon-ssh:pom:2.1
z / do centralnej ( http: //repo.maven.apache. org / maven2 ):
Nie udało się przesłać pliku: http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom .
Kod powrotu to:501, ReasonPhrase:HTTPS Required. -> [Help 2]
Oczekiwanie na zakończenie przez Jenkins zbierania
data[ERROR]
wtyczkiorg.apache.maven.plugins:maven-clean-plugin:2.4.1
lub jednej z jej zależności nie można rozwiązać:
Nie można odczytać deskryptora artefaktu dlaorg.apache.maven.plugins:maven-clean-plugin:jar:2.4.1
:
Nie można przenieść artefaktuorg.apache.maven.plugins:maven-clean-plugin:pom:2.4.1
z / do centrali ( http://repo.maven.apache.org/maven2 ):
Nie udało się przenieś plik: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1.pom .
Kod powrotu to:501 , ReasonPhrase:HTTPS Required. -> [Help 1]
źródło
settings.xml
w jenkinsie centralny adres URL mavenOdpowiedzi:
Przyczynę zaobserwowanego błędu wyjaśniono w Wymaganie centralne 501 HTTPS
Wygląda na to, że najnowsze wersje Maven (wypróbowane z 3.6.0, 3.6.1) domyślnie korzystają już z adresu URL HTTPS.
Oto daty zmiany głównych repozytoriów:
Twoje kompilacje Java mogą ulec awarii od 13 stycznia (jeśli nie przełączyłeś jeszcze dostępu do repozytorium na HTTPS)
Aktualizacja: Wygląda na to, że z maven 3.2.3 maven central jest dostępny za pośrednictwem HTTPS Patrz https://stackoverflow.com/a/25411658/5820670
Dziennik zmian Maven ( http://maven.apache.org/docs/3.2.3/release-notes.html )
źródło
settings.xml
plik (i głosuj na nie, proszę, ponieważ jest to prawidłowe rozwiązanie, inne niż użycie łatanego Maven).settings.xml
używanie repozytoriów HTTPS .. które mogą,wget
ale z jakiegoś bardzo dziwnego powodumvn archetype:generate -X
(aby tylko sprawdzić, czy zależności można pobrać) nadal drukuje, że ma dostęp doDownloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-clean-plugin/2.5/maven-clean-plugin-2.5.pom
jakiejkolwiek pomocy, proszę ...?Mam ten sam problem. Próbowałem dwóch rozwiązań i oba działają dla mnie dobrze.
Zaktualizuj repozytorium wersji Maven:
Pobierz plik binarny Apache Maven, który zawiera domyślne adresy https ( plik binarny Apache Maven 3.6.3 ). I otwórz okno dialogowe Opcje w narzędziach paska menu NetBeans ( Widok okna dialogowego Java Maven ). I wybierz opcję przeglądania w polu listy domowej Maven (widok skrzynki domowej Maven ). Po dodaniu nowo pobranej wersji Apache Maven ( zaktualizowany widok pola listy głównej Maven ), projekt buduje się i działa pomyślnie.
Ogranicz bieżącą wersję Maven, aby korzystać z łączy HTTPS:
Dołącz następujący kod do pom.xml swojego projektu.
źródło
( źródło )
Wprowadziliśmy następujące zmiany w build.gradle mojego projektu:
Stary:
Nowy:
źródło
Spróbuj trafić poniższy adres URL w dowolnej przeglądarce. Zwróci 501
http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom
Spróbuj z https. Pobiera plik pom.xml:
https://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom
Dodaj go ( https://repo.maven.apache.org/maven2 ) w pliku setting.xml:
źródło
Zaktualizuj centralne repozytorium Maven i użyj https zamiast http .
źródło
Korzystałem z czystej instalacji Maven / Java na kontenerze Docker.
Dla mnie musiałem tam
cd $M2_HOME/conf
edytowaćsettings.xml
plik. Dodaj następujący blok do środka<mirrors>...</mirrors>
źródło
Korzystałem z przestarzałej wersji Maven (3.0.3 i 3.1). Te starsze wersje nie obsługują już repozytoriów HTTP (jak wspomniano powyżej). Aktualizacja do Maven 3.6 była dla mnie poprawką.
źródło
Maven przechodzi na HTTPS i wyłącza dostęp HTTP
Krótka historia, od 15 stycznia 2020 r. Repozytorium Maven Central nie obsługuje już połączeń HTTP (inne repozytoria robią to samo). Dlatego wskażesz ustawienia Maven / Gradle, aby używać adresu URL HTTPS.
Rozwiązanie:
Możesz wybrać jedno z trzech poniższych podejść.
Dodaj repozytorium do
pom.xml
pliku swojego projektuDodaj repozytorium do profilu w
settings.xml
pliku.Dla Gradle:
Zamień tylko adres URL wersji HTTPS.
źródło
$M2_HOME
lub twoje$PATH
zmienne env będą wskazywały tylko na jedną z nich, która będzie twoją domyślną wersją maven. Wolę odinstalować starszą przed zainstalowaniem nowszej. Ale to zależy od twoich potrzeb.Dodałem następujący fragment kodu do pliku setting.xml i to rozwiązało problem,
źródło
Mam ten sam problem, ale używam GitLab zamiast Jenkins. Kroki, które musiałem zrobić, aby rozwiązać problem:
Zdaję sobie sprawę, że jest to bardziej specyficzne dla mojej konfiguracji. Ale bez wykonania wszystkich powyższych kroków nadal otrzymywałbym ten komunikat o błędzie
Return code is: 501 , ReasonPhrase:HTTPS Required
źródło
Jak stwierdzono w innych odpowiedziach, https jest teraz wymagane do wysyłania żądań do Maven Central, podczas gdy starsze wersje Maven używają http .
Jeśli nie chcesz / nie możesz zaktualizować do wersji Maven 3.2.3+, możesz to obejść, dodając następujący kod do MAVEN_HOME \ conf \ settings.xml w
<profiles>
sekcji:Będzie to zawsze aktywne ustawienie, chyba że w razie potrzeby wyłączysz / zastąpisz je w POM.
źródło
Dla wszystkich koderów korporacyjnych, najlepiej, jeśli pojawi się ten błąd, oznacza to, że twoja baza kodu jest wciąż budowana ze społeczności open source. Musisz przejechać „centralne” repozytorium z własnym menedżerem repozytorium firmy Maven.
Możesz przejść do pliku settings.xml i zastąpić adres URL centralnego repozytorium z http: // na https: //
Znajdź sekcje mirrorów i dodaj następujący wpis:
W sekcji URL, jeśli korzystasz z http://repo1.maven.org/maven2/ lub http://repo.maven.apache.org/maven2/ następnie
Wymienić http://repo1.maven.org/maven2/ z https://repo1.maven.org/maven2/
Wymienić http://repo.maven.apache.org/maven2/ z https://repo.maven.apache.org/maven2/
Najlepiej jest tutaj użyć adresu URL zarządzania / repozytorium kontroli firmy. Ponieważ zablokuje to każdy kontakt ze społecznością repozytoriów Maven typu open source.
Jak wspomniano w innych odpowiedziach, obowiązujące od 15 stycznia 2020 r., Centralne repozytorium Maven nie obsługuje niepewnej komunikacji przez zwykły HTTP.
źródło
Dla mnie (programista korporacyjny) również dodanie repozytorium lustrzanego w
settings.xml
naprawionym problemie. Używam również Maven wewnątrz kontenera dokerów.źródło
Korzystanie z Ubuntu 16.04, java 1.8.0_201.
Odinstalowałem stary maven i zainstalowałem Maven 3.6.3, nadal mam ten błąd, że zależności Maven zawodzą z błędem 501.
Uświadomił sobie, że może to być problem z zaufaniem / magazynem kluczy związany z wymaganiem https. Stwierdzono, że można teraz skonfigurować opcje -Djavax przy użyciu pliku jvm.config, patrz: https://maven.apache.org/configure.html .
Ponieważ używam również Tomcat, skopiowałem konfigurację magazynu kluczy i magazynu zaufanych certyfikatów z Tomcat (setenv.sh) do mojego pliku jvm.config, a następnie zadziałało!
Istnieje również opcja przekazania tej konfiguracji w 'export MAVEN_OPTS' (przy użyciu generowania mvn), ale chociaż zatrzymało to błąd 501, stworzyło ono inny: oczekiwał pliku pom.
Utworzenie osobnego pliku jvm.config działa idealnie, wystarczy umieścić go w katalogu głównym projektu.
Mam nadzieję, że to komuś pomaga, zajęło mi cały dzień, aby to rozgryźć!
źródło
Ten sam problem występuje również w przypadku jcenter .
Projekty korzystające z tych samych zależności zaczną napotykać problemy. Aby uzyskać szybkie poprawki, wykonaj następujące czynności w swoim build.gradle
zamiast
Użyj tego:
źródło
Błąd:
Nie udało się przesłać pliku: http://repo.maven.apache.org/maven2/org/apache/maven/wagon/wagon-ssh/2.1/wagon-ssh-2.1.pom .
Kod powrotu to: 501, Powód Hasło: Wymagany HTTPS.
Analiza przyczyn:
Maven Central oczekuje, że klienci używają protokołu https, ale klient wysyła tylko zwykłe żądania HTTP.
Dlatego żądanie pobrania pakietu o nazwie „wagon-ssh-2.1.pom” nie powiodło się.
Jak rozwiązać problem?
Zamień adres URL „ http://repo.maven.apache.org/maven2 ”
z „ https://repo.maven.apache.org/maven2 ”
w pliku pom.xml lub pliku build.gradle projektu.
źródło
Udostępnianie tego, jeśli ktoś tego potrzebuje:
Konfiguracja Old Gradle (bez Gitlab, wdrożenia Docker, dla prostych projektów)
Nowa konfiguracja:
Zwróć uwagę na https. Miłego kodowania :)
źródło
Moje obecne środowisko nie obsługuje HTTPS, więc dodanie niezabezpieczonej wersji repozytorium rozwiązało mój problem: http://insecure.repo1.maven.org zgodnie z Sonatype
źródło
Dodaj następujące repozytorium w pom.xml .
źródło
http