任意のURLで公開されているライブラリを取得する
URLリゾルバを利用すれば、特定のURLで公開されているモジュールを、依存モジュールとしてIvyで取得することができます。
具体的には、
- 「ivysettings.xml」を作成し、URLリゾルバの設定を追加。
- artifact要素の値として、取得先URLを指定。[revision]や[artifact]といったパターンが使え、モジュールの取得時にモジュールのバージョンや名前に置換されます。
- ivy要素で、モジュールのivy.xmlファイルの取得先も指定できるようです。(未確認)
- あとは、作成した「ivysettings.xml」をivyに読み込ませるようにすればOK。とりあえず、ivy.xml,build.xmlおよびivysettings.xmlを並列に配置すれば読み込んでくれます!
以下はURLリゾルバの設定を行なったivysettings.xmlのサンプルです。
<?xml version="1.0" encoding="UTF-8"?> <ivysettings> <settings defaultResolver="url-resolver"/> <resolvers> <url name="url-resolver"> <!-- 取得先を指定。[revison]や[artifact]はartifact名やバージョンに置き換えられる。 --> <artifact pattern="http://foo.com/export/xxx/yyy/[revision]/[organisation]/common/jars/[artifact].[ext]" /> <!-- ivy要素で モジュールのivy.xmlの取得先も指定できる。 <ivy pattern="http://foo.com/export/xxx/yyy/[revision]/[organisation]/common/ivy/[artifact].xml/> --> </url> </resolvers> </ivysettings>
依存モジュールとして次の設定を行なった場合、
<?xml version="1.0" encoding="UTF-8"?> <ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"> <info organisation="ivy-test" module="test"/> <dependencies> <dependency name="common" org="var" rev="current"/> </dependencies> </ivy-module>
「
http://foo.com/export/xxx/yyy/current/var/common/jars/common.jar
からモジュールが取得され、
./lib/common-current.jar
に配置されます。
ちなみに、↑の設定だけだとmvnrepository.comのモジュールは探しに行かなくなるのでご注意。どうすればいいかは、明日調べる。