Maven Proxy/Server設定を場所に基づいて構成可能にしますか?
質問
だから、これを達成するための最良の方法が何であるかはわかりませんが、基本的に私はMavenプロジェクトで職場で使用するラップトップを持っています。私が仕事をしているときはそれは正常に動作しますが、私が彼らの企業のプロキシとメイベンサーバーのドアから出るとすぐに、私はしばしば多くの手作業をしなければなりません settings.xml
私が家にいるときにファイルvpn'edでは:
- 私たちは、私たち自身のアーティファクトのいくつかを保存し、一般的に使用されるアーティファクトの中間人であることを処理するために、企業にインストールされたMavenリポジトリプロキシサーバーを持っています。
- 外の世界に接続するために使用するHTTPプロキシがあります。
両方の構成は私によって処理されました settings.xml
設定のためのファイル 単一のネクサスグループ と Maven Proxies. 。オフィスから離れている間にVPNに接続していない場合は、settings.xmlを使用していないたびに、settings.xmlを動かしてから、そのままに戻す必要があります。
他の誰かがこれを処理することを発見したソリューションは何ですか?プロキシを管理するためにプロファイルを試みてきましたが、正しく機能するようにすることはできません。かなり醜く見え始めています。できる設定構成がありますか 探知 私が職場でプロキシの後ろにいないとき、コーポレートプロキシサーバーまたはMavenサーバーを使用しないときは?
解決
プロキシを処理するためのプロファイルベースのソリューションを考えることができますが(基本的に、 <active>
プロファイルで定義されているプロパティからの値)、これは完全に自動化されません( プロファイルのアクティブ化 ネットワークベースのものをサポートしないでください)あなたの場所に応じて存在するかどうか(この場合、既存/欠落ファイルのトリガーを使用できますが、これはちょっとハッキーです)を見つけることができない限り。とにかく、これは鏡をプロファイルで宣言できないため、問題の一部のみを解決します(参照 MNG-3525).
したがって、プロファイルでこれを制御しようとする代わりに、私の提案は2つを使用することです settings.xml
そしてあなたを渡す settings-home.xml
でファイル -s
あなたが家にいるときのコマンドラインオプション。
別のオプションは、あなたの変更を自動化することです settings.xml
スクリプト(グルーヴィーは誰かが報告したように良い選択になるでしょう MNG-3525).
他のヒント
設定する使用環境変数を見つけました 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
.
私は同じ問題に不満を感じていました。ネットワーク間をローミングするときに、settings.xmlを手動で編集する必要があります。実際、プロキシ設定の自動発見を可能にするMavenプラグインを書きました。現在の実装では、Bernd Rosstauscherによって書かれたプロキシボールライブラリを使用して、OSの構成、ブラウザー、環境設定に基づいてプロキシ設定を検出します。
Apache 2.0ライセンスの下で、GitHubのプラグインのソースコードをリリースしました。 https://github.com/volkertb/autoproxy-maven-plugin
あなたはそれを試してみて、それがあなたのニーズを満たしているかどうかを確認することを歓迎します。フィードバックや貢献は大歓迎です!
(注:必ずしもプロジェクトのPOMにプラグインを追加する必要はありません。インストール後、コマンドラインからも呼び出すことができます。詳細については、サイトのReadmeをご覧ください。)
設定できます 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"