
Apache Ant と Apache Ivy を使って Maven Repository から Guava を取得すると不要な javadoc.jar と sources.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.xml の ivy:retrieve タスクに type="jar, bundle" を設定しておくこと.そうすると guava-33.2.1-jre.jar のみを取得できる❗️
<ivy:retrieve type="jar, bundle"/>
解決策2
もう一つの解決策は ivy.xml の dependency タグの中に 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>