ivyでrestletを参照する。

ivyでRestletのMavenリポジトリ(http://maven.restlet.org)を参照して、Jarとソースを引っ張って来たかったんだけど、なかなか設定できなかったのでメモ。

ivy-setting.xml

<ivysettings>
  <settings defaultResolver="restlet" />
  <resolvers>
    <url name="restlet" m2compatible="true">
      <artifact
        pattern="http://maven.restlet.org/[organisation]/[module]/[revision]/[artifact]-[revision]-[type].[ext]" />
      <artifact
        pattern="http://maven.restlet.org/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]" />
    </url>
  </resolvers>
</ivysettings>

ivy.xml

<?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="jp.saisse" module="ivy-test" />

  <configurations>
    <conf name="runtime" />
    <conf name="sources" />
  </configurations>
  <dependencies>
    <dependency org="org.restlet" name="org.restlet" rev="1.1.3">
      <artifact name="org.restlet" type="jar" conf="runtime->default" />
    </dependency>
    <dependency org="org.restlet" name="org.restlet" rev="1.1.3">
      <artifact name="org.restlet" type="sources" ext="jar" conf="sources->default" />
    </dependency>
  </dependencies>
</ivy-module>

build.xml

<?xml version="1.0" encoding="UTF-8" ?>

<project default="retrive" xmlns:ivy="antlib:org.apache.ivy.ant">
  <target name="retrive">
    <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant"
        classpath="./lib/ivy-2.0.0.jar" />
    <ivy:settings file="ivy-setting.xml"/>
    <ivy:retrieve pattern="lib/[conf]/[artifact]-[revision].[ext]" conf="runtime"/>
    <ivy:retrieve pattern="lib/[conf]/[artifact]-[revision]-[type].[ext]" conf="sources"/>
  </target>
</project>

ポイントはivy-setting.xmlのartifactが2並んでるところと、ivy.xmlでsourcesとruntimeを別に定義してるところ、retriveも[type]を指定してるのとしてないので2回実行してるところ。って大部分がポイントか...
ホントはdependencyはひとつでいいはずなんだけど、どうしてもソースが取得できなかったり余計なのが落ちてきちゃう。

で、実行すると↓みたいな感じ。

└─lib
    ├─runtime
    │      org.restlet-1.1.3.jar
    │      
    └─sources
            org.restlet-1.1.3-sources.jar