Ivy のパッケージ リゾルバーを使用して、ダウンロード可能なパッケージを Ivy モジュールに変換できます。
アイビー ラウンドアップリポジトリも参照してください。
サンプル プロジェクトは、次のファイルで構成されています。
$ find . -type f
./build.xml
./ivy.xml
./ivysettings.xml
./repository/net.sourceforge/ooweb/0.8.0/packager.xml
アイビー.xml
ooweb モジュールに対する依存関係を宣言する通常の ivy ファイル:
<ivy-module version="2.0">
<info organisation="com.myspotontheweb" module="packager_demo"/>
<dependencies>
<dependency org="net.sourceforge" name="ooweb" rev="0.8.0"/>
</dependencies>
</ivy-module>
ivysettings.xml
Maven 中央リポジトリがデフォルトのリポジトリとしてセットアップされます。特別な「パッケージャー」リゾルバーを使用して、oowebモジュールを取得します。
アーティファクトパターンは、モジュール アーティファクトのダウンロード方法に関する指示を含むパッケージャー ファイルを指しています。
<ivysettings>
<settings defaultResolver="central"/>
<resolvers>
<ibiblio name="central" m2compatible="true"/>
<packager name="packager" buildRoot="${user.home}/.ivy2/packager/build" resourceCache="${user.home}/.ivy2/packager/cache" preserveBuildDirectories="false">
<ivy pattern="file:///${ivy.settings.dir}/repository/[organisation]/[module]/[revision]/ivy.xml"/>
<artifact pattern="file:///${ivy.settings.dir}/repository/[organisation]/[module]/[revision]/packager.xml"/>
</packager>
</resolvers>
<modules>
<module organisation="net.sourceforge" name="ooweb" resolver="packager"/>
</modules>
</ivysettings>
packager.xml
これが魔法です。リソース宣言は、tar パッケージの場所を示します。ビルド セクションには、モジュールの成果物セクションに移動するファイルに関する ANT 命令が含まれています。
<packager-module version="1.0">
<property name="name" value="${ivy.packager.module}"/>
<property name="version" value="${ivy.packager.revision}"/>
<property name="packagename" value="${name}-${version}"/>
<resource dest="archive" url="http://sourceforge.net/projects/ooweb/files/ooweb/0.8.0/ooweb-0.8.0-bin.tar.gz/download" sha1="d886a3d48bf4380cbec3e6f7de029f01e5c55315" type="tar.gz"/>
<build>
<move file="archive/${packagename}/lib/${packagename}.jar" tofile="artifacts/jars/${name}.jar"/>
</build>
</packager-module>
注:内部では、ivy は XSLT スタイルシートを使用して、パッケージャー宣言から ANT スクリプトを生成します。次に、この ANT スクリプトはアーティファクトをダウンロードし、アイビー キャッシュに配置します。
アップデート
Gradle には ivy が組み込まれているため、このパッケージャー ソリューションは 2 つのビルド テクノロジで機能するはずです。この回答を参照してください。