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>
<?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