大道至简,知易行难
广阔天地,大有作为

使用polipo解决maven-antrun-plugin插件不走代理的问题

Ambari在编译过程中需要下载包括node、npm、yarn等在内的大量依赖,在国内编译时会遇到无法绕过网络问题。由于s3.amazonaws.com基本不可用,因此在在下载诸如HBase等大文件时极为缓慢且成功的概率基本为零;而HBase等大文件主要是通过maven-antrun-plugin插件的get不会使用maven镜像、maven代理:

Ambari编译过程中遇到s3.amazonaws.com缓慢的问题

Ambari编译过程中遇到s3.amazonaws.com缓慢的问题

无奈尝试使用全局代理(转发至国内的HTTP/SOCKS5代理,然后国内的代理通过SS出墙),先尝试了privoxy,但不支持privoxy不支持HTTP和SOCKS5的用户名/密码验证,无果。

之后,查阅polipo文档(官网也被封了),发现其上级代理为HTTP类型时能够使用用户名/密码验证,于是进行尝试。

The variable parentProxy specifies the hostname and port number of an HTTP parent proxy; it should have the form ‘host:port’.

If the parent proxy requires authorisation, the username and password should be specified in the variable parentAuthCredentials in the form ‘username:password’. Only Basic authentication is supported, which is vulnerable to replay attacks.

使用:

安装polipo,然后修改配置文件/etc/polipo/config:

使用如下命令启停:

polipo默认端口为8123,在/etc/environment中增加如下两个环境变量(大小写敏感):

然后直接使用wget测试即可:

然而,再次尝试编译Ambari,发现maven-antrun-plugin插件还是不走代理,思路失败!

Stack Overflow上有一个问题https://stackoverflow.com/questions/21108925/specifiying-proxy-to-sign-jars-with-maven-with-maven-antrun-plugin也提到了maven-antrun-plugin插件不走/etc/maven/settings.xml中所配置的代理的问题,甚至还有一个2015年的问题(https://issues.apache.org/jira/browse/MANTRUN-195)中也提到了:

When setting a a proxy in my settings.xml file, the proxy configuration is not passed on to the Antrun plugin. Any Ant scripts, trying to access the outside network do not suceed because no proxy is used.

ant官网https://ant.apache.org/manual/proxy.html称可以使用环境变量:

但这个用法实测无效,应该将其加到mvn的编译参数中,即将编译时使用的命令行改为:

然后就可以看到maven-antrun-plugin插件走代理了:

maven-antrun-plugin终于走了代理

maven-antrun-plugin终于走了代理

转载时请保留出处,违法转载追究到底:进城务工人员小梅 » 使用polipo解决maven-antrun-plugin插件不走代理的问题

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址