kakakakakku blog

Weekly Tech Blog: Keep on Learning!

Apache Ivy で Guava を取得するときに javadoc.jar と sources.jar を除外する

Apache Ant と Apache Ivy を使って Maven Repository から Guava を取得すると不要な javadoc.jarsources.jar も一緒に取得されてしまうときの解決策を2つメモしておく〜📝

再現確認

まず,Apache Ant の build.xml にデフォルト設定の ivy:retrieve タスクを書いておく.

<target name="resolve">
    <ivy:retrieve/>
</target>

そして,Apache Ivy の ivy.xml には Maven Repository に載っている dependency タグを書く.ちなみに今回は取得するファイル数を減らすために意図的に transitive="false" を付けておく👌

<ivy-module version="2.0">
    <info organisation="sandbox" module="module"/>
    <dependencies>
        <dependency org="com.google.guava" name="guava" rev="33.2.1-jre" transitive="false"/>
    </dependencies>
</ivy-module>

ant resolve コマンドを実行すると,以下の3ファイルが取得されてしまう😇

guava-33.2.1-jre-javadoc.jar
guava-33.2.1-jre-sources.jar
guava-33.2.1-jre.jar

解決策1

解決策の一つは build.xmlivy:retrieve タスクに type="jar, bundle" を設定しておくこと.そうすると guava-33.2.1-jre.jar のみを取得できる❗️

<ivy:retrieve type="jar, bundle"/>

ant.apache.org

解決策2

もう一つの解決策は ivy.xmldependency タグの中に artifact タグを設定しておくこと.同じく guava-33.2.1-jre.jar のみを取得できる❗️

<ivy-module version="2.0">
    <info organisation="sandbox" module="module"/>
    <dependencies>
        <dependency org="com.google.guava" name="guava" rev="33.2.1-jre" transitive="false">
            <artifact name="guava"/>
        </dependency>
    </dependencies>
</ivy-module>

ant.apache.org