アイビー:Nexusとその依存関係で公開されたスナップショットの取得

StackOverflow https://stackoverflow.com/questions/3922821

  •  29-09-2019
  •  | 
  •  

質問

私はアイビーを使用して、次の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を作成することに注意してください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top