Jak korzystać z Mavena przez proxy?

Chcę podzielić się swoim doświadczeniem z korzystania z Mavena przez proxy.

Najprawdopodobniej napotkasz wyjątki i wiadomości typu:

repository metadata for: 'org.apache.maven.plugins' could not be retrieved from 
repository: central due to an error: Error transferring file: Connection refused: connect

Lub

[WARNING] Failed to retrieve plugin descriptor for org.apache.maven.plugins:maven-clean-
plugin:2.5: Plugin org.apache.maven.plugins:maven-clean-plugin:2.5 or one of its 
dependencies could not be resolved: Failed to read artifact descriptor for 
org.apache.maven.plugins:maven-clean-plugin:jar:2.5

Jak skonfigurować Maven do korzystania z serwera proxy?

 93
Author: Duncan Jones, 2009-08-09

15 answers

Aby dowiedzieć się więcej o konfiguracji proxy dla Mavena, zapoznaj się z mini poradnikiem .

Zasadniczo musisz upewnić się, że sekcja proxy w ustawieniach globalnych ([maven install]/conf/settings.xml) lub ustawieniach użytkownika (${user.home}/.m2/settings.xml) jest poprawnie skonfigurowana. Lepiej jest to zrobić w ustawieniach użytkownika, aby uniknąć przechowywania hasła w zwykłym tekście w miejscu publicznym.

Maven 2.1 wprowadził szyfrowanie haseł , ale nie mam czasu na sprawdzenie czy szyfrowanie dotyczy ustawień proxy jako podobnie jak hasła do repozytorium (nie widze jednak dlaczego by nie).

Dla informacji, istnieje skomentowana konfiguracja proxy w Ustawieniach.xml i instrukcje jak go zmodyfikować.

Z mini-przewodnika, Twoje ustawienia powinny wyglądać mniej więcej tak:

<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
                  http://maven.apache.org/xsd/settings-1.0.0.xsd">
[...]
  <proxies>
    <proxy>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.somewhere.com</host>
      <port>8080</port>
      <username>proxyuser</username>
      <password>somepassword</password>
      <nonProxyHosts>www.google.com|*.somewhere.com</nonProxyHosts>
    </proxy>
  </proxies>
[...]
</settings>
 118
Author: Rich Seller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-12 04:16:01

Jak korzystać z proxy socks?

Skonfiguruj tunel SSH do serwera gdzieś:

ssh -D $PORT $USER@$SERVER

Linux (bash):

export MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"

Windows:

set MAVEN_OPTS="-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=$PORT"
 37
Author: gs1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-20 13:11:22

Też miałem ten problem i rozwiązałem go edytując ustawienia.plik xml w moim .folder m2. Moje ustawienia.xml jest teraz tak:

<settings>
  <proxies>
    <proxy>
      <id>genproxy</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxyHost</host>
      <port>3128</port>
      <username>username</username>
      <password>password</password>
    </proxy>
 </proxies>
</settings>
 19
Author: pedrobisp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-19 18:35:08

Zauważ również, że niektóre wtyczki (remote-resources) używają naprawdę starej biblioteki, która akceptuje konfigurację proxy tylko przez MAVEN_OPTS;

-Dhttp.proxyHost=<host> -Dhttp.proxyPort=<port> -Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port>
/ Align = "left" /
 13
Author: krosenvold,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-30 08:13:02

Są one spowodowane najprawdopodobniej przez 2 Problemy:

  1. Musisz dodać konfigurację serwera proxy do swoich ustawień.xml. Oto sztuczka w polu Nazwa użytkownika. Upewnij się, że wygląda jak nazwa użytkownika domeny. Ustawienie tam domeny i umieszczenie tego dokładnego ukośnika jest ważne '\'. Możesz użyć tag jeśli hasło zawiera znaki nie przyjazne xml.
  2. zauważyłem, że maven 2.2.0 nie działa czasami przez proxy, gdzie 2.2.1 działa idealnie dobrze.

Jeśli niektóre z nich zostaną pominięte-maven może zawieść z losowymi komunikatami o błędach.

Mam tylko nadzieję, że uratowałem kogoś przed googlowaniem tego problemu przez 6 godzin, tak jak to zrobiłem.

 11
Author: Bogdan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-09 11:59:45

Dodam tylko własne doświadczenia z tym: prokurentem mojej firmy jest http://webproxy.intra.companyname.com:3128. Aby maven działał przez ten serwer proxy, ustawienia muszą być dokładnie {[6] } tak jak to

<settings>
  <proxies>
    <proxy>
      <id>default</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>webproxy.intra.companyname.com</host>
      <port>3128</port>
    </proxy>
  </proxies>
</settings>

W przeciwieństwie do innych plików konfiguracyjnych proxy, protocol tutaj opisuje jak połączyć się z serwerem proxy, a nie jakie rodzaje protokołów powinny być proxy. http część docelowa musi zostać oddzielona od nazwy hosta, w przeciwnym razie nie będzie działać.

 11
Author: Andy Jones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-15 09:25:03

Aby ustawić Maven Proxy :

Edycja sesji proxy w twoim ~/.m2 / ustawienia.plik xml . Jeśli nie możesz znaleźć pliku, utwórz go.

<settings>
<proxies>
    <proxy>
        <id>httpproxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <host>your-proxy-host</host>
        <port>your-proxy-port</port>
        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
<proxy>
        <id>httpsproxy</id>
        <active>true</active>
        <protocol>https</protocol>
        <host>your-proxy-host</host>
        <port>your-proxy-port</port>
        <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>

</proxies>
</settings>

Lub

Edytuj sesję proxy w swoim {m2_home}/conf/settings.xml

Mam nadzieję, że to pomoże.. :)
 10
Author: Sarat Chandra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-08 04:37:27

I aby dodać do tego tematu, oto moje doświadczenia poniżej... Naprawdę dziwne i czasochłonne, więc pomyślałem, że warto dodać.

Miałem podobny problem próbując zbudować portlet-bridge Na Windows, dostając następujące błędy:

Downloading: http://repo1.maven.org/maven2/org/apache/portals/bridges-pom/1.0/bridges-pom-1.0.pom
[DEBUG] Reading resolution tracking file C:\Documents and Settings\myuser\.m2\repository\org\apache\portals\bridges-pom\1.0\bridges-pom-1.0.pom.lastUpdated
[DEBUG] Writing resolution tracking file C:\Documents and Settings\myuser\.m2\repository\org\apache\portals\bridges-pom\1.0\bridges-pom-1.0.pom.lastUpdated
[ERROR] The build could not read 1 project -> [Help 1]
org.apache.maven.project.ProjectBuildingException: Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM: Could not transfer artifact
org.apache.portals:bridges-pom:pom:1.0 from/to central (http://repo1.maven.org/maven2): Error transferring file: repo1.maven.org and 'parent.relativePath' points at wrong local
POM @ line 23, column 11
...
[ERROR]   The project org.apache.portals.bridges:portals-bridges-common:2.0 (H:\path_to_project\portals-bridges-common-2.0\pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM: Could not transfer artifact org.apache.portals:bridges-pom:pom:1.0 from/to central (http://repo1.maven.org/maven2):
Error transferring file: repo1.maven.org and 'parent.relativePath' points at wrong local POM @ line 23, column 11: Unknown host repo1.maven.org -> [Help 2]
...
[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/ProjectBuildingException
[ERROR] [Help 2] http://cwiki.apache.org/confluence/display/MAVEN/UnresolvableModelException

Próbowałem kilku rzeczy, po odrobinie surfowania:

  • Próbowałem ustawić rodzica.relativePath jako pusty, więc maven nie myślał, że rodzic jest lokalny. Jest to zgodne z sugestią NA SO at Hudson build fail: Nierozwiązywalny rodzic pom i w tym forum . To nie miało żadnego wpływu.

  • Próbowałem również upewnić się, że repozytorium jest wyraźnie wymienione w moich ustawieniach.xml, ale to też nie miało wpływu.

  • Następnie upewniłem się, że mvn był zmuszony przeszukać repozytorium, zamiast polegać na własnej historii, jak omówiono w tego bloga przez Sarthon {12]}. Niestety, to też nie było problemem.

  • W pewnej desperacji, potem ponownie odwiedziłem moją MAVEN_OPTS, aby upewnić się, że nie wpadłem w Moje ustawienia proxy. Były one poprawne, aczkolwiek z wartością nienotowaną:

    Set MAVEN_OPTS= -Dhttp.proxyHost=myproxy.mycompany.com -Dhttp.proxyPort=8080-Xmx256m

  • W końcu przeniosłem konfigurację proxy do moich ustawień.xml i to działało:

    <proxies>
      <proxy>
        <id>genproxy</id>
        <active>true</active>
        <protocol>http</protocol>
        <!--username>proxyuser</username-->
        <!--password>proxypass</password-->
        <host>myproxy.mycompany.com</host>
        <port>8080</port>
        <nonProxyHosts>*.mycompany.com|127.0.0.1</nonProxyHosts>
      </proxy>
    </proxies>

Naprawdę Nie wiem, dlaczego mój oryginalny MAVEN_OPTS nie działał (cytaty?) podczas gdy ustawienia.konfiguracja xml zadziałała. Chciałbym odwrócić poprawkę i sprawdź każdy krok ponownie, ale zmarnowałem zbyt dużo czasu. Zgłosi kiedy i kiedy.

 6
Author: wmorrison365,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:16

Wiem, że to nie jest tak naprawdę odpowiedź na pytanie, ale może warto wiedzieć dla kogoś, kto przeszukuje ten post. Możliwe jest również zainstalowanie proxy repozytorium Maven, takiego jak nexus.

Twój maven będzie skonfigurowany tak, aby kontaktował się z lokalnym proxy Nexus, A Nexus będzie pobierał (i buforował) artefakty. Może być skonfigurowany przez interfejs WWW i ma wsparcie dla (http) Proxy).

Może to być zaletą, szczególnie w otoczeniu firmy, ponieważ artefakty są dostępne lokalnie i można je szybko pobrać, a ty nie jesteś już tak zależny od dostępności zewnętrznych repozytoriów Mavena.

Aby linkować do pytania; w Nexusie jest ładny GUI dla konfiguracji proxy, i to musi być zrobione tylko w jednym miejscu, a nie dla każdego dewelopera.

 4
Author: extraneon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-08-09 12:16:23

Dzięki @ krosenvold.

Jeśli zmiany w pliku ustawień nie działają, spróbuj tego w wierszu polecenia z plikiem POM.

mvn install -Dhttp.proxyHost=abcproxy -Dhttp.proxyPort=8080 -Dhttps.proxyHost=abcproxy -Dhttps.proxyPort=8080

Pomogło mi to natychmiast po zmianie hasła.

 4
Author: user1189363,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-27 16:50:41

Jeśli maven działa przez proxy, ale nie niektóre wtyczki, które wywołuje, spróbuj ustawić JAVA_TOOL_OPTIONS, a także z ustawieniami -Dhttp*.proxy*.

Jeśli już JAVA_OPTS po prostu zrób

export JAVA_TOOL_OPTIONS=$JAVA_OPTS
 1
Author: auselen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-02 11:25:38

Uruchamiam cntlm lokalnie, skonfigurowane z NTLMv2 hashami haseł do uwierzytelniania za pomocą firmowego proxy i używam

export MAVEN_OPTS="-DproxyHost=127.0.0.1 -DproxyPort=3128"

Aby użyć tego proxy z maven. Oczywiście serwer proxy, którego używasz, powinien obsługiwać cntlm/NTLMv2.

 1
Author: Peter Hofman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-29 09:39:06

Z wyjątkiem technik wymienionych powyżej, z pewnym wysiłkiem, możesz uruchomić Mavena przez proxy używając biblioteki jproxyloader (na stronie znajduje się przykład jak to zrobić: http://jproxyloader.sourceforge.net / ). pozwala to skonfigurować Socks proxy tylko do pobierania artefaktów.

W rozwiązaniu wspomnianym przez duanniego (ustawienie-dsocksproxyhost) jest jeden problem. Jeśli masz testy integracyjne uruchomione z lokalną bazą danych (lub inne testy łączące się z adresem url, które nie powinny przejść przez proxy). Testy te przestaną działać, ponieważ połączenia do bazy danych będą również kierowane do serwera proxy. Z pomocą jProxyLoader można skonfigurować proxy tylko dla hosta nexus. Dodatkowo, jeśli chcesz, możesz przekazywać połączenia do bazy danych przez inny serwer proxy.

 0
Author: walkeros,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-02 04:57:53

Powyższe wpisy pomogły w rozwiązaniu mojego problemu. Oprócz powyższego musiałem wprowadzić następujące zmiany, aby to działało:

  • Zmodyfikowano ustawienia JRE Net Mavena (\jre\lib\net.właściwości), aby użyć ustawienia proxy systemu. https.proxyHost= proxy DNS https.proxyPort=proxy port

    • włączone Ustawienia serwera proxy w Ustawieniach.xml. Nie podałem ustawień nazwy użytkownika i hasła, aby używać uwierzytelniania NTLM.
 0
Author: siachen345,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-01 19:50:36

Czasami trzeba dodać inne znaczniki <proxy></proxy> i podać https w znacznikach protokołu: <protocol>https</protocol>

 0
Author: Pepe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-17 19:40:34