Nic*_*uer 18 profile settings proxy maven-2 mirror
所以我不确定实现这一目标的最佳方法是什么,但基本上我有一台笔记本电脑用于Maven项目.当我在工作时它工作正常,但是当我走出他们的公司代理和maven服务器的门时,我经常不得不settings.xml在我在家的时候做很多手工捏造文件如果我'我不是VPN的:
这两个配置都由我的settings.xml文件处理,用于设置单个Nexus组和maven代理.如果我在离开办公室时没有连接到VPN,每次我不使用时都要使用settings.xml,然后在我使用时将其切换回来.
有没有其他人找到解决方案?我一直在尝试使用配置文件来管理代理,但我似乎无法让它正常工作,并且它开始看起来很难看.是否有一些设置配置可以检测我何时不在代理后面工作而不使用公司代理服务器或Maven服务器?
Pas*_*ent 10
虽然我可以想到一些基于配置文件的解决方案来处理代理(基本上,<active>从配置文件中定义的属性读取值),但这不会完全自动化(配置文件激活不支持基于网络的东西),除非你能找到根据您的位置存在与否的文件(在这种情况下,您可以使用现有/丢失的文件触发器,但这有点hacky).无论如何,这只能解决问题的一部分,因为无法在配置文件中声明镜像(参见MNG-3525).
因此,我不建议使用配置文件来控制它,而是建议使用两个,settings.xml并在您回家时settings-home.xml使用-s命令行选项传递文件.
另一种选择是settings.xml使用脚本自动化您的更改(如在MNG-3525中报告的那样,Groovy将是一个不错的选择).
我发现使用环境变量和shell别名nonProxyHosts一起设置是在使用代理和没有代理的网络之间切换时最方便的解决方案.proxynoproxy
在settings.xml,配置代理服务器
<host>proxy.corporation.int</host>
<port>8080</port>
<nonProxyHosts>${env.MAVEN_NONPROXY}</nonProxyHosts>
Run Code Online (Sandbox Code Playgroud)
然后在~/.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"
Run Code Online (Sandbox Code Playgroud)
要在漫游时进行切换,您只需从shell执行:
[me@linuxbox me]$ proxy
Run Code Online (Sandbox Code Playgroud)
要么
[me@linuxbox me]$ noproxy
Run Code Online (Sandbox Code Playgroud)
显然,这两个别名proxy并且noproxy可以包含比仅仅设置MAVEN_NOPROXY和更多的更改all_proxy.