7

ivysettings.xmlIvy のドキュメントを読んでいて、ivy.jar 内にあるデフォルトについて質問があります。

私がやりたいことは、パブリック リポジトリをローカルの Maven リポジトリに変更することだけです。それでおしまい。すべてのivysettings*.xmlファイルをプロジェクトにコピーし<ivy:settings>、それを指すために使用することはできますが、多くのものが複製されます。を変更することもできますivy.jarが、これにはメンテナンスの頭痛の種が追加されます。開発者は my を使用する必要ivy.jarがあり、新しいバージョンに移行する場合は、再度変更する必要があります。

では、標準の Ivy 設定をすべて保持し、使用するリポジトリを単純に切り替えるにはどうすればよいでしょうか? Ivy がすでに持っているものに自分の変更を重ねるだけです。


さらに 2 つの質問があります。

  • ivyconf*.xmlファイルとファイルの違いは何ivysettings*.xmlですか? Ivy に重複した構成があるのはなぜですか?
  • アイビーの良い本は何ですか? 私は現在、マニングのAnt in Actionを使用しています。これは、Ivy をやや要約した方法でカバーしており、少し古くなっています。Ivy Web サイト自体のリソースはひどいものです。
4

3 に答える 3

6

それが私のivysettings.xmlファイルです

<ivysettings>
    <include url="${ivy.default.settings.dir}/ivysettings.xml"/>
    <resolvers>
        <chain name="download-chain" changingPattern=".*" checkmodified="true" >
            <ibiblio name="maven" m2compatible="true" />
        </chain>
    </resolvers>
</ivysettings>

ここに追加のリゾルバーを記述していますが、URL に示されている標準のリゾルバー以外はすべて使用していることに注意してください。これにより、ivy.jar ファイルの ivysettings.xml から設定が読み込まれます。

ivyconf*.xml について。現在は廃止されていると思います。Ivysettings は、これを行う新しい方法です。

リソースはかなりひどいです。私はそれに完全に同意します。ただし、stackoverflow.com の多くの回答は十分に冗長であり、実際に問題を予測しようとしています。

Mark O'Connor の回答は特に冗長で、的を射ています。新しいことを学んでいるという事実を受け入れる必要があります。ただ時間をかけてください。

于 2012-07-13T20:12:12.310 に答える
1

最後にそれを理解しました。

jar から ivysettings.xml ファイルをコピーし、わずかな変更を加えました。最初のインクルードは、以下${ivy.lib.dir}ではなく、ivy の XML ファイルを指していることに注意してください${ivy.default.settings.dir}

<ivysettings>
<settings defaultResolver="default"/>
    <include file="${ivy.lib.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>

ivysettings-public.xmlデフォルトと同じ独自のものを持っていますが、現在はroot自分のリポジトリに を定義しています。(はい、今のところ localhost ですが、すべて解決したら実際のサーバーに設定します):

<ivysettings>
    <resolvers>
        <ibiblio name="public" m2compatible="true" 
              root="http://localhost:8081/artifactory/repo" />
    </resolvers>
</ivysettings>

今、私build.xmlの中には、次のものがあります:

<property name="ivy.lib.dir"        value="${basedir}/ivy.lib"/>

<taskdef uri="ivylib:org.apache.ivy.ant"
    resource="org/apache/ivy/ant/antlib.xml">
    <classpath>
        <fileset dir="${ivy.lib.dir}">
            <include name="ivy.jar"/>
            <include name="ivy-*.jar"/>
        </fileset>
    </classpath>
</taskdef>

<ivy:configure file="${ivy.lib.dir}/ivysettings.xml" override="true"/>

それはトリックを行うようです。

于 2012-07-13T20:17:52.997 に答える
0

build.xml に以下を含めます。

<property name="ivy.settings.dir" value="PATH OF SETTINGS" />
<property file="${ivy.settings.dir}/ivysettings.properties" />
<ivy:settings file="${ivy.settings.dir}/ivysettings.xml" />
于 2013-01-11T03:09:02.070 に答える