Настройки прокси с плющом - PullRequest
17 голосов
/ 27 мая 2010

У меня есть проблема, когда я определил зависимости в ivy.xml от нашей внутренней корпоративной SVN. Я могу получить доступ к этому сайту 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 (как если бы у меня был прокси, ivy не сможет найти файл ivy за прокси из сети), и он мне просто нужен, когда мой распознаватель переходит на публичный URL.

Ответы [ 2 ]

15 голосов
/ 27 мая 2010

ANT настройки прокси

Насколько я знаю, настройки прокси не могут быть установлены в файле ANT. В документации указано, что вам необходимо установить следующую переменную среды

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 resolver

Для центральных зависимостей maven вам нужен распознаватель, который выглядит так

<ibiblio name="maven2" m2compatible="true"/>

Это автоматически перейдет на центральный URL Maven "http://repo1.maven.org/maven2". Согласно doco этот преобразователь будет использовать POM модуля в Maven для определения переходных зависимостей.

Наконец слово предупреждения. Если вы не используете раздел modules в своем файле ivysettings, убедитесь, что ваши средства распознавания объявлены в преобразователе цепей, чтобы ivy проверил оба хранилища для каждого модуля

<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>
14 голосов
/ 14 марта 2011

При использовании setproxy используйте атрибут nonproxyhosts, чтобы указать хосты, для которых прокси-сервер не должен использоваться (с разделением каналов). например, измените задачу setproxy в вашем примере на

<setproxy proxyhost="${proxy.host}"
          proxyport="${proxy.port}"
          nonproxyhosts="xyz.svn.com"/>

Подробнее см. http://ant.apache.org/manual/Tasks/setproxy.html

...