5

他の人がプロパティを介してプロジェクトに含めるマスター Ivy プロジェクトがありsvn:externalsます。このプロジェクトには、Ivy jar、プロジェクトに接続するデフォルトの ivysettings.xml ファイル、および jar の作成方法などを標準化できるいくつかの Ant マクロが含まれています (たとえば、ユーザーは<jar.macro>vsを使用します<jar><jar.macro>パラメータだけでなく、自動的にpom.xmljar に埋め込み、Jenkins ビルド情報をマニフェストに追加します)。

また、継続的インテグレーション システムとして Jenkins を使用しています。私がやりたいことの 1 つは、ビルドごとに Ivy キャッシュを消去することです。これにより、キャッシュの問題による jar の問題が発生しなくなります。これを行うivysettings.xmlために、Jenkins Executor ごとに個別のキャッシュを定義するようにファイルをセットアップしました。

<ivysettings>
    <property name="env.EXECUTOR_NUMBER" value="0" override="false"/>
    <caches
        defaultCacheDir="${ivy.default.ivy.user.dir}/cache-${env.EXECUTOR_NUMBER}"
        resolutionCacheDir="${ivy.dir}/../target/ivy.cache"/>
    <settings defaultResolver="default"/>
    <include file="${ivy.dir}/ivysettings-public.xml"/>
    <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/>
    <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/>
    <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/>
    <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/>
</ivysettings>

私はもともとこの<ivy:settings>タスクを使用して、Ivy でプロジェクトを構成しました。しかし、すべての Jenkins executor が同じ Ivy キャッシュを使用していたため、問題が発生していました。<ivy:settings>からに切り替えた<ivy:configure>ところ、問題は解決しました。が呼び出されるまでIvyを設定しない<ivy:configure>一方で、Ivy をすぐに設定する (したがって、キャッシュを正しく設定する)ようです。<ivy:settings><ivy:resolve>

Nabble<ivy:configure>で非推奨 (または非推奨) についてのメールを見たことがあります。Ivy のオンライン ドキュメントに<ivy:configure>は、非推奨であることを示すものは何もありません。

では、いつ<ivy:settings>vs.を使用しますか<ivy:configure>。私の場合、Jenkins executor ごとに個別のキャッシュが必要だったので、 を使用する必要がありましたが、 を使用する<ivy:configure>理由はありますか? そして、非推奨ですか?<ivy:settings><ivy:configure><ivy:configure>

4

1 に答える 1

4

ここに私が見つけたものがあります:

  • <ivy:settings>より新しく、推奨される方法です。
  • <ivy:configure>廃止される場合とされない場合があります。
  • <ivy:settings><ivy:resolve>が呼び出されるまで Ivy 設定を設定しませんが<ivy:configure>、タスクが実行されるとすぐにすべての Ivy 設定を設定します。

最後は私の問題です。並行して Jenkins ビルドを行っており、各ビルドを完全にクリーンなキャッシュで開始したいので、Jenkins executor 番号に応じてカスタマイズされたキャッシュ設定を使用します。キャッシュは でラベル付けされcache-0cache-5います。

ただし、<ivy:settings>は を呼び出すまで実行されない<ivy:resolve>ため、カスタマイズしたキャッシュ設定は反映されません。Ivy resolve を呼び出す<ivy:cleancache>前に呼び出します。これにより、ビルドで共通のキャッシュが消去されます。陽気さが続きます。を使用<ivy:cofnfigure>すると、この問題が修正されます。

于 2013-01-17T23:34:15.470 に答える