我有一个问题,我在内部公司svn上的ivy.xml中定义了依赖项。我能够在没有任何代理任务的情况下访问这个svn站点。虽然我的依赖项驻留在ibiblio上,但这是我们公司之外的东西,并且需要代理才能下载内容。我在这里使用常春藤时遇到了问题。
我在build.xml中有以下内容
<target name="proxy">
<property name="proxy.host" value="xyz.proxy.net"/>
<property name="proxy.port" value="8443"/>
<setproxy proxyhost="${proxy.host}" proxyport="${proxy.port}"/>
</target>
<!-- resolve the dependencies of stratus -->
<target name="resolveTestDependency" depends="testResolve, proxy" description="retrieve test dependencies with ivy">
<ivy:settings file="stratus-ivysettings.xml" />
<ivy:retrieve conf="test" pattern="${jars}/[artifact]-[revision].[ext]"/><!--pattern here specifies where do you want to download lib to?-->
</target>
<target name=" testResolve ">
<ivy:settings file="stratus-ivysettings.xml" />
<ivy:resolve conf="test" file="stratus-ivy.xml"/>
</target>
以下是stratus-ivysettings.xml
的摘录<resolvers>
<!-- here you define your file in private machine not on the repo (e.g. jPricer.jar or edgApi.jar)-->
<!-- This we will use a url nd not local file system.. -->
<url name="privateFS">
<ivy pattern="http://xyz.svn.com/ivyRepository/ [organisation]/ivy/ivy.xml"/>
</url>
.
.
.
<url name="public" m2compatible="true">
<artifact pattern="http://www.ibiblio.org/maven2/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
</url>
.
.
.
因为在这里可以看到获取ivy.xml,我不需要任何代理,因为它在我们自己的网络中,当我设置代理时无法访问。但另一方面,我也在使用ibiblio,它在我们的网络外部,仅适用于代理。所以在build.xml之上不适用于那种情况。有人可以帮忙。
我在获取ivy.xml时不需要代理(好像我有代理,常春藤不能在网络中找到代理后面的常春藤文件),而我只需要在我的解析器转到公共网址时。
答案 0 :(得分:15)
据我所知,无法在ANT文件中设置代理设置。 documentation表示您需要设置以下环境变量
export ANT_OPTS="-Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080"
这些是系统属性(与普通的ANT属性相反)。
<强>更新强> 我纠正了。我看到你正在使用设置代理的 setproxy 方法。我从来没用过它。设置系统参数一直对我有用,并且具有超出构建文件的优势(例如,当我在家中没有代理时工作时)。
我不知道如何使用ANT代理机制排除本地主机。我所能建议的只是尝试直接配置JRE
http://java.sun.com/j2se/1.4.2/docs/guide/plugin/developer_guide/proxie_config.html
对于maven中心依赖项,您需要一个看起来像这样的解析器
<ibiblio name="maven2" m2compatible="true"/>
这将自动转到Maven中心网址“http://repo1.maven.org/maven2”。 根据{{3}},这个解析器将使用Maven中的模块POM来确定瞬态依赖性。
最后一句警告。除非您在ivysettings文件中使用doco部分,否则请确保您的解析器在链解析器中声明,以便常春藤搜索每个模块的两个存储库
<chain name="defaultResolver" returnFirst="true">
<url name="privateFS">
<ivy pattern="http://xyz.svn.com/ivyRepository/ [organisation]/ivy/ivy.xml"/>
</url>
<ibiblio name="maven2" m2compatible="true"/>
</chain>
答案 1 :(得分:14)
使用setproxy
时,使用nonproxyhosts
属性指定代理不应使用的主机(管道分隔)。例如,将示例中的setproxy
任务修改为
<setproxy proxyhost="${proxy.host}"
proxyport="${proxy.port}"
nonproxyhosts="xyz.svn.com"/>