Apache Ivy を使って Maven Repository からライブラリを取得するときに,例えば CI 環境では JUnit や Mockito などの「テストに必要な依存関係」も取得したいという場面がある.Apache Ivy では configurations(コンフィグレーション) を使って柔軟に依存関係を管理できる👌
サンプルコード
Apache Ivy の ivy.xml
を以下のように書いた.ポイントは configurations
タグで,今回は compile
(コンパイルに必要な依存関係)と test
(テストに必要な依存関係)という2種類のコンフィグレーションを設定した.Apache Ivy のドキュメントを見ると,アプリケーション単位の依存関係などさらに柔軟に設定している例もあった💡そして dependency
タグを書くときに conf="compile->default"
や conf="test->default"
のようにコンフィグレーションを紐付ければ OK ✅
<ivy-module version="2.0"> <info organisation="sandbox" module="module"/> <configurations> <conf name="compile" /> <conf name="test" /> </configurations> <dependencies> <!-- compile --> <dependency org="com.google.code.gson" name="gson" rev="2.11.0" conf="compile->default"/> <!-- test --> <dependency org="org.junit.jupiter" name="junit-jupiter-api" rev="5.10.3" conf="test->default"/> <dependency org="org.mockito" name="mockito-core" rev="5.12.0" conf="test->default"/> <dependency org="org.mockito" name="mockito-junit-jupiter" rev="5.12.0" conf="test->default"/> </dependencies> </ivy-module>
そして Apache Ant の build.xml
には resolve
ターゲットと resolve-test
ターゲットを書いておく.
<project xmlns:ivy="antlib:org.apache.ivy.ant"> <target name="resolve"> <ivy:retrieve type="jar" conf="compile"/> </target> <target name="resolve-test" depends="resolve"> <ivy:retrieve type="jar" conf="test"/> </target> </project>
動作確認
ant resolve
コマンドを実行すると,コンパイルに必要な Gson とその依存関係を取得できる👌
error_prone_annotations-2.27.0.jar gson-2.11.0.jar
ant resolve-test
コマンドを実行すると,テストに必要な JUnit / Mockito とその依存関係を取得できる👌 そして resolve-test
ターゲットには resolve
ターゲットへの依存も設定しているため,コンパイルに必要な依存関係も取得できている \( 'ω')/
apiguardian-api-1.1.2.jar byte-buddy-1.14.15.jar byte-buddy-agent-1.14.15.jar error_prone_annotations-2.27.0.jar gson-2.11.0.jar junit-jupiter-api-5.10.3.jar junit-platform-commons-1.10.3.jar mockito-core-5.12.0.jar mockito-junit-jupiter-5.12.0.jar objenesis-3.3.jar opentest4j-1.3.0.jar
ドキュメント
以下に Apache Ivy の configurations に関連するドキュメントを載せておく🔗