常春藤的代理设置

时间:2010-05-27 13:10:35

标签: ant proxy ivy

我有一个问题,我在内部公司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时不需要代理(好像我有代理,常春藤不能在网络中找到代理后面的常春藤文件),而我只需要在我的解析器转到公共网址时。

2 个答案:

答案 0 :(得分:15)

ANT代理设置

据我所知,无法在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解析器

对于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"/>

有关详细信息,请参阅http://ant.apache.org/manual/Tasks/setproxy.html