jarとivy.xmlを別々の場所から取得する
dual リゾルバを使うと、jarとivy.xmlをそれぞれ別のリゾルバを使って取得することができます。非ivyなjarがあってアクセス可能なURLで公開されている場合、ローカルにivy.xmlを用意しdualリゾルバでURL上のjarとローカルのivy.xmlをそれぞれを取得することで、ivyなjarとして依存関係を解決したりできます。
具体的には
ibysettings.xmlでリゾルバとしてdual要素を配置し、子要素に
- ivy.xmlなどの設定ファイルを解決するリゾルバ
- jarを解決するリゾルバ
を順番に指定します。逆にすると動かないのでご注意。以下は、ivy.xmlをローカルの特定のパスから、jarを特定のURLから取得する場合の設定例です。
<?xml version="1.0" encoding="UTF-8"?> <ivysettings> <settings defaultResolver="dual"/> <resolvers> <!-- dualリゾルバでivy.xmlとjarを別の場所から取得 --> <dual name="dual"> <!-- 子要素として、ivy.xmlとjarの取得先を順に並べる --> <filesystem name="ivys"> <ivy pattern="${ivy.settings.dir}/ivys/[module]-ivy.xml" /> </filesystem> <url name="url"> <artifact pattern="http://foo.com/export/xxx/yyy/[revision]/[organisation]/common/jars/[artifact].[ext]" /> </url> </dual> </resolvers> </ivysettings>
chainリゾルバとの併用も可
chainリゾルバと併用することも可能です。以下の設定では、ローカルファイルからivy.xml/URLからjarを取得し、取得できない場合はibiblioリゾルバから取得します。
<?xml version="1.0" encoding="UTF-8"?> <ivysettings> <settings defaultResolver="chain"/> <resolvers> <chain name="chain" returnFirst="true"> <dual name="dual"> <filesystem name="ivys"> <ivy pattern="${ivy.settings.dir}/ivys/[module]-ivy.xml" /> </filesystem> <url name="url"> <artifact pattern="http://foo.com/export/xxx/yyy/[revision]/[organisation]/common/jars/[artifact].[ext]" /> </url> </dual> <ibiblio name="maven2" m2compatible="true"/> </chain> </resolvers> </ivysettings>