Сделать настройки прокси / сервера Maven настраиваемыми в зависимости от местоположения? - PullRequest
17 голосов
/ 01 марта 2010

Так что я не уверен, что лучший способ сделать это, но в основном у меня есть ноутбук, который я использую на работе для проектов Maven. Он отлично работает, когда я на работе, но как только я выхожу за пределы их корпоративного прокси-сервера и сервера maven, мне часто приходится много раз подделывать файл settings.xml, когда я дома если я не подключен к VPN:

  • У нас установлен корпоративный прокси-сервер Maven Repository для хранения некоторых наших собственных артефактов и обработки их как посредника для наших часто используемых артефактов.
  • У нас есть http-прокси, который мы используем для подключения к внешнему миру.

Обе конфигурации были обработаны моим settings.xml файлом для установки одной группы Nexus и maven прокси . Если я не подключен к VPN, находясь вдали от офиса, мне придется каждый раз, когда я не подключаюсь к файлу settings.xml, затем переключать его обратно, когда я на нем.

Какие решения кто-нибудь еще нашел для решения этой проблемы? Я пробовал профили для управления прокси, но я не могу заставить его работать правильно, и это начинает выглядеть довольно уродливо. Существуют ли некоторые настройки конфигурации, которые могут обнаруживать , когда я не работаю за прокси-сервером и не использую корпоративный прокси-сервер или сервер Maven?

Ответы [ 4 ]

9 голосов
/ 01 марта 2010

Хотя я могу подумать о некотором решении на основе профиля для обработки прокси-сервера (в основном, при чтении значения <active> из свойства, определенного в профиле), это не будет полностью автоматизировано ( активация профиля не поддерживают сетевой материал), если вы не можете найти файл, который присутствует или не существует, в зависимости от вашего местоположения (в этом случае вы можете использовать существующий / отсутствующий триггер файла, но это довольно хакерски). В любом случае, это решило бы только одну часть проблемы, поскольку зеркала не могут быть объявлены в профилях (см. MNG-3525 ).

Таким образом, вместо того, чтобы пытаться управлять этим с помощью профиля, я бы предложил использовать два settings.xml и передать ваш файл settings-home.xml с параметром командной строки -s, когда вы находитесь дома.

Другой вариант - автоматизировать изменения в вашем settings.xml с помощью скрипта (Groovy был бы хорошим выбором, как сообщалось в MNG-3525 ).

6 голосов
/ 09 декабря 2015

Я нашел использование переменных среды для установки nonProxyHosts вместе с псевдонимами оболочки proxy и noproxy как наиболее удобное решение при переключении между сетями с прокси и без него.

В settings.xml, настроить прокси с

<host>proxy.corporation.int</host>
<port>8080</port>
<nonProxyHosts>${env.MAVEN_NONPROXY}</nonProxyHosts>

Затем в ~/.profile установите

export MAVEN_NONPROXY_PROXY='*.corporation.int|local.net|some.host.com'
export MAVEN_NONPROXY_NOPROXY='*'

alias proxy="export MAVEN_NONPROXY=\"$MAVEN_NONPROXY_PROXY\" && export all_proxy=http://proxy.corporation.int:8080"
alias noproxy="export MAVEN_NONPROXY=\"$MAVEN_NONPROXY_NOPROXY\" && unset all_proxy"


Чтобы переключиться в роуминге, вам нужно просто выполнить из оболочки:

[me@linuxbox me]$ proxy

или

[me@linuxbox me]$ noproxy

Очевидно, что оба псевдонима proxy и noproxy могут включать в себя гораздо больше изменений, чем просто установка MAVEN_NOPROXY и all_proxy.

3 голосов
/ 06 ноября 2014

Я был разочарован той же проблемой: необходимость вручную редактировать settings.xml при роуминге между сетями. На самом деле так много, что я написал плагин Maven, который позволяет автоматически обнаруживать настройки прокси. Текущая реализация использует библиотеку proxy-vole, написанную Берндом Росстаушером, для определения настроек прокси на основе конфигурации ОС, браузера и настроек среды.

Я только что выпустил исходный код плагина на Github под лицензией Apache 2.0: https://github.com/volkertb/autoproxy-maven-plugin

Вы можете попробовать и посмотреть, отвечает ли он вашим потребностям. Любые отзывы и предложения приветствуются!

(Примечание: вам не обязательно добавлять плагин в POM вашего проекта. Вы также можете вызвать его из командной строки, после того как вы его установили. Для получения дополнительной информации см. README на сайте.)

0 голосов
/ 18 июня 2018

Вы можете установить MAVEN_OPTS, когда вам нужно активировать прокси:

export MAVEN_OPTS="-Dhttp.proxyHost=my-proxy-server -Dhttp.proxyPort=80 -Dhttp.nonProxyHosts=*.my.org -Dhttps.proxyHost=my-proxy-server -Dhttps.proxyPort=80 -Dhttps.nonProxyHosts=*.my.org"
...