Ivy.xmlで社内の企業svnに依存関係を定義しているという問題があります。 antのプロキシタスクなしでこの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に移動するときに必要です。
setproxy
を使用する場合は、nonproxyhosts
属性を使用して、プロキシを使用しない(パイプで区切る)ホストを指定します。たとえば、例のsetproxy
タスクを次のように変更します。
<setproxy proxyhost="${proxy.Host}"
proxyport="${proxy.port}"
nonproxyhosts="xyz.svn.com"/>
詳細については、 http://ant.Apache.org/manual/Tasks/setproxy.html を参照してください。
私の知る限り、プロキシ設定は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の中央URL " http://repo1.maven.org/maven2 "に自動的に移動します。 doco によると、このリゾルバーはMavenのモジュールPOMを使用して、一時的な依存関係を判別します。
最後に警告の言葉。 ivysettingsファイルで modules セクションを使用している場合を除き、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>