Я использую Ubuntu с Gnome, где я могу установить параметры сетевого прокси (с проверкой подлинности).
Вопрос в том, как я могу запустить maven в командной строке и заставить использовать этот прокси?
Я использую Ubuntu с Gnome, где я могу установить параметры сетевого прокси (с проверкой подлинности).
Вопрос в том, как я могу запустить maven в командной строке и заставить использовать этот прокси?
Существует системное свойство java.net.useSystemProxies
, которое может быть установлено на true
(на платформах Windows и Linux), чтобы сообщить JVM использовать настройки прокси-сервера системы. Из руководства Java Networking and Proxies:
Прежде чем мы увидим, как написать такой
ProxySelector
, расскажите о стандартном. J2SE 5.0 обеспечивает реализацию по умолчанию, которая обеспечивает обратную совместимость. Другими словами, по умолчаниюProxySelector
проверит свойства системы, описанные ранее, чтобы определить, какой прокси использовать. Однако есть новая, необязательная функция: в последних системах Windows и на платформах Gnome 2.x можно указать по умолчаниюProxySelector
использовать настройки прокси-сервера системы (как последние версии Windows, так и Gnome 2.x позволяют вам установить прокси-серверы по всему миру через свой пользовательский интерфейс). Если для системного свойстваjava.net.useSystemProxies
установлено значениеtrue
(по умолчанию оно равноfalse
для обеспечения совместимости), тогда по умолчаниюProxySelector
будет пытаться использовать эти настройки. Вы можете установить это системное свойство в командной строке или отредактировать установочный файл JRElib/net.properties
, таким образом, вы должны изменить его только один раз в данной системе.
Но это будет работать только для классов java.net.*
, а не для commons-httpclient, jsch и т.д. Таким образом, это не решает всей проблемы, и Maven на самом деле не поддерживает ее (это зарегистрировано как MNG-728).
Другими словами, я боюсь, вам придется настроить параметры прокси-сервера в ~/.m2/settings.xml
.
Вы посмотрели http://maven.apache.org/guides/mini/guide-proxies.html?
В ваших settings.xml:
<settings>
.
.
<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>
ПРИМЕЧАНИЕ. Это не влияет на код Java! Эти параметры прокси-сервера являются настройками прокси-сервера Maven.
Те, кому необходимо установить эти параметры в командной строке, могут использовать следующее:
MAVEN_CLI_OPTS: "-DproxySet=true -Dhttp.proxyHost=yourProxyHost -Dhttp.proxyPort=9999 -Dhttp.nonProxyHosts=mvnrepository.com"
Использование:
mvn $MAVEN_CLI_OPTS test
Предупреждение: Свойство nonProxyHosts не работало корректно для меня при использовании его из среды CI. Я подозреваю, что это может быть потому, что символы канала не интерпретируются правильно в синтаксисе Gitlab YAML, но я не нашел способа исправить это.
Источник: https://confluence.atlassian.com/jirakb/java-option-http-nonproxyhosts-does-not-work-214863640.html
В Netbeans вы должны удалить -Djava.net.useSystemProxies=true
из Tools-> option->java->Maven
. После его удаления Maven считывает настройки прокси-сервера из settings.xml
.