如何在Ant部署中配置代理设置?
问题描述
正在构建groovyldap项目,执行ant命令时遭遇依赖解析失败,报错显示无法连接Maven仓库,怀疑是代理问题。原本期望Ant自动使用系统环境变量的代理,请问如何在Ant部署中设置代理?
执行ant命令的输出如下:
$ ant Buildfile: /Users/user/Projects/groovyldap/build.xml prepare: resolve: [ivy:retrieve] :: Apache Ivy 2.5.1 - 20221101102211 :: https://ant.apache.org/ivy/ :: [ivy:retrieve] :: loading settings :: url = jar:file:/usr/local/Cellar/ant/1.10.13/libexec/lib/ivy-2.5.1.jar!/org/apache/ivy/core/settings/ivysettings.xml [ivy:retrieve] :: resolving dependencies :: Apache Directory Project#groovyldap;working@redacted.example.com [ivy:retrieve] confs: [default] [ivy:retrieve] :: resolution report :: resolve 494ms :: artifacts dl 0ms --------------------------------------------------------------------- | | modules || artifacts | | conf | number| search|dwnlded|evicted|| number|dwnlded| --------------------------------------------------------------------- | default | 1 | 0 | 0 | 0 || 0 | 0 | --------------------------------------------------------------------- [ivy:retrieve] [ivy:retrieve] :: problems summary :: [ivy:retrieve] :::: WARNINGS [ivy:retrieve] module not found: groovy#groovy;1.0 [ivy:retrieve] ==== local: tried [ivy:retrieve] /Users/user/.ivy2/local/groovy/groovy/1.0/ivys/ivy.xml [ivy:retrieve] -- artifact groovy#groovy;1.0!groovy.jar: [ivy:retrieve] /Users/user/.ivy2/local/groovy/groovy/1.0/jars/groovy.jar [ivy:retrieve] ==== shared: tried [ivy:retrieve] /Users/user/.ivy2/shared/groovy/groovy/1.0/ivys/ivy.xml [ivy:retrieve] -- artifact groovy#groovy;1.0!groovy.jar: [ivy:retrieve] /Users/user/.ivy2/shared/groovy/groovy/1.0/jars/groovy.jar [ivy:retrieve] ==== public: tried [ivy:retrieve] https://repo1.maven.org/maven2/groovy/groovy/1.0/groovy-1.0.pom [ivy:retrieve] -- artifact groovy#groovy;1.0!groovy.jar: [ivy:retrieve] https://repo1.maven.org/maven2/groovy/groovy/1.0/groovy-1.0.jar [ivy:retrieve] :::::::::::::::::::::::::::::::::::::::::::::: [ivy:retrieve] :: UNRESOLVED DEPENDENCIES :: [ivy:retrieve] :::::::::::::::::::::::::::::::::::::::::::::: [ivy:retrieve] :: groovy#groovy;1.0: not found [ivy:retrieve] :::::::::::::::::::::::::::::::::::::::::::::: [ivy:retrieve] :::: ERRORS [ivy:retrieve] Server access error at url https://repo1.maven.org/maven2/groovy/groovy/1.0/groovy-1.0.pom (java.net.ConnectException: Connection refused) [ivy:retrieve] Server access error at url https://repo1.maven.org/maven2/groovy/groovy/1.0/groovy-1.0.jar (java.net.ConnectException: Connection refused) [ivy:retrieve] [ivy:retrieve] :: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS BUILD FAILED /Users/user/Projects/groovyldap/build.xml:43: impossible to resolve dependencies: resolve failed - see output for details Total time: 1 second
解决方法
1. 命令行临时设置代理
执行Ant时直接传递JVM代理参数,适合临时使用:
ant -Dhttp.proxyHost=你的代理IP或域名 -Dhttp.proxyPort=代理端口 -Dhttps.proxyHost=你的代理IP或域名 -Dhttps.proxyPort=代理端口
如果代理需要用户名和密码认证,添加对应参数:
ant -Dhttp.proxyHost=你的代理IP或域名 -Dhttp.proxyPort=代理端口 -Dhttp.proxyUser=代理用户名 -Dhttp.proxyPassword=代理密码 -Dhttps.proxyHost=你的代理IP或域名 -Dhttps.proxyPort=代理端口 -Dhttps.proxyUser=代理用户名 -Dhttps.proxyPassword=代理密码
2. 全局Ant配置文件设置
编辑Ant的全局配置文件(路径通常为~/.ant/ant.conf,若不存在则创建;或ANT_HOME/etc/ant.conf),添加以下配置:
http.proxyHost=你的代理IP或域名 http.proxyPort=代理端口 https.proxyHost=你的代理IP或域名 https.proxyPort=代理端口 # 若需认证,取消下面两行注释并填写信息 # http.proxyUser=代理用户名 # http.proxyPassword=代理密码 # https.proxyUser=代理用户名 # https.proxyPassword=代理密码
保存后,后续所有ant命令都会自动加载这些代理配置。
3. Ivy专属代理配置(针对本次依赖解析工具)
由于本次依赖解析使用的是Apache Ivy,若上面两种方法不生效,需单独配置Ivy的代理:
- 在项目根目录创建自定义
ivysettings.xml文件,添加代理配置:
<ivysettings> <settings defaultResolver="public"/> <resolvers> <ibiblio name="public" m2compatible="true"/> </resolvers> <proxies> <proxy host="你的代理IP或域名" port="代理端口" protocol="http"/> <proxy host="你的代理IP或域名" port="代理端口" protocol="https"/> <!-- 若需认证,添加以下内容 --> <!-- <proxy host="你的代理IP或域名" port="代理端口" protocol="http" username="代理用户名" password="代理密码"/> --> <!-- <proxy host="你的代理IP或域名" port="代理端口" protocol="https" username="代理用户名" password="代理密码"/> --> </proxies> </ivysettings>
- 修改项目
build.xml中的ivy:retrieve任务,指定使用自定义配置文件:
<ivy:retrieve settingsFile="${basedir}/ivysettings.xml"/>
内容的提问来源于stack exchange,提问作者3ch01c
相关产品推荐
相关产品推荐

