アイビー:Nexusとその依存関係で公開されたスナップショットの取得
質問
私はアイビーを使用して、次のANTターゲットを使用して、地元でホストされたNexusリポジトリに構築された瓶のスナップショットを公開しています。
<target name="publish">
<ivy:publish resolver="nexus_snapshot" pubrevision="SNAPSHOT" overwrite="true">
<artifacts pattern="${dist.dir}/[artifact].[ext]" />
</ivy:publish>
</target>
これは正常に動作するように見え、jarとそれに関連するivy.xmlがリポジトリに存在します(Filenames mymodule-snapshot.jarおよびivy-snapshot.jar)。
その後、別のビルドスクリプトで、JARとそれに関連する依存関係(IVY.xmlで指定されているように)をディレクトリに取得したいと思います。
これは私が使用しているアリのターゲットです。
<target name="deploy">
<delete dir="deploy" />
<mkdir dir="deploy" />
<ivy:settings file="${ivy.dir}/ivy_deploy_settings.xml" />
<ivy:retrieve organisation="myorg" module="mymodule"
inline="true" revision="SNAPSHOT" pattern="deploy/[artifact].[ext]"/>
</target>
これにより、jarがディレクトリに取得されますが、その依存関係は取得しません。また、追加する場合
conf="impl"
取得すると、構成が見つからないため、失敗します。
そのため、取得は単にivy.xmlを参照していないため、依存関係を解決しないようです。
これは機能するべきですか、それとも私は何かを誤解していますか?
解決
私は今、この問題を解決しました。問題は、NexusがIvyファイルではなくPOMファイルを使用して動作することだけだと思います(少なくともデフォルトでは、関連する構成オプションが表示されません)。
したがって、解決策は、適切なPOMを生成し、これを瓶とともに公開することです。
<target name="publish">
<property name="generated.ivy.file" value="${dist.dir}/ivy.xml" />
<ivy:deliver deliverpattern="${generated.ivy.file}"
organisation="${ivy.organisation}"
module="${ivy.module}" status="integration"
revision="${ivy.revision}"
pubrevision="SNAPSHOT"
conf="impl" />
<ivy:makepom ivyfile="${generated.ivy.file}"
pomfile="${dist.dir}/${ivy.module}.pom"/>
<ivy:publish resolver="nexus_snapshot" pubrevision="SNAPSHOT"
publishivy="false" status="integration" overwrite="true">
<artifacts pattern="${dist.dir}/[artifact].[ext]" />
<artifact name="${ivy.module}" type="pom" ext="pom"/>
</ivy:publish>
</target>
最初に現在のモジュール(および目的の構成)のIVYファイルを生成してPOMを作成することに注意してください。
所属していません StackOverflow