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 に関連するドキュメントを載せておく🔗