kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Apache Ivy の configurations でテストに必要な依存関係を取得する

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

ant.apache.org

ant.apache.org

ant.apache.org

関連記事

kakakakakku.hatenablog.com