1

URL リゾルバーを使用して依存関係をダウンロードしたいと考えています。依存は JS または XML ファイルです。だから、私は使用しました:

<url name="urlresolver">
  <artifact pattern="http://[organisation]/[module]-[revision].[ext]" />
</url>

<ivy:retrieve pattern="${build}/[module]-[revision].[ext]"/>

ファイルは .jar 拡張子で保存されます。

4

1 に答える 1

5

次のツタのドキュメントを掘り下げる価値があります。

最初の問題は、URL リゾルバーがリモート モジュールの Ivy ファイルを読み取るように構成されていないことです (各モジュールで Ivy ファイルを使用するという、ivy のベスト プラクティスにおける最初の推奨事項を無視します)。モジュールのメタデータがない場合、ivy は JAR ファイルをダウンロードしようとしていると想定します。

2 つ目の問題は、ファイルの保存に Ivy リポジトリを使用していないように見えることです。次の依存関係宣言:

<dependency org="yourorg" name="module1" rev="9.1"/>

現在の設定を使用すると、次の URL に変換されます。

http://yourorg/module1-9.1.jar

「org」フィールドは、サーバーのホスト名ではなく、モジュールを発行する組織単位を指定するように設計されています。

ファイルのリポジトリを構築することにあまり興味がなく、ファイルをダウンロードしてキャッシュするように ivy を説得したいだけなのではないでしょうか? その場合、依存関係アーティファクトに追加の属性を使用して同様のことを行う次の回答を読むことをお勧めします。

アイビー.xml

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
    ..
    ..
    <dependency org="yourorg" name="yourmodule1" rev="9.1">
       <artifact name="file1"  e:hostname="www.server1.com" type="xml"/>
       <artifact name="file2"  e:hostname="www.server1.com" type="xml"/>
    </dependency>

    <dependency org="yourorg" name="yourmodule2" rev="9.1">
       <artifact name="file3"  e:hostname="www.server2.com" type="xml"/>
       <artifact name="file4"  e:hostname="www.server2.com" type="xml"/>
    </dependency>
    ..

ノート:

  • 各依存関係は、各アーティファクトのタイプと、追加の「ホスト名」属性を宣言します。
  • リモート モジュールに ivy.xml が含まれている場合は、publicationsセクションに代わりにこのアーティファクト情報が格納されます。
  • 追加のアーティファクトは、あらゆる種類のカスタム属性メタデータを有効にする ivy の力を示しています。

ivysettings.xml

..
<url name="urlresolver">
      <artifact pattern="http://[hostname]/files/[organisation]/[module]-[revision].[ext]" />
</url>
..

リゾルバーが標準属性とカスタム「ホスト名」の両方を使用する方法を示します。

于 2012-09-03T20:14:56.330 に答える