2

マルチモジュールのant + ivyプロジェクトがあります。プロジェクト間の依存関係は、ivy.xml ファイルに記録されます。

<ivy:retrieve>呼び出されると、ローカル プロジェクトを含むすべての依存関係をダウンロードしようとします。

ローカル プロジェクトを取得から除外するにはどうすればよいですか?

あるいは${projects.dir}/*/ivy.xml、IvyDE がワークスペース リゾルバーで行うように、ファイルシステム リゾルバーを使用して に解決できる可能性があります。

アップデート

ローカル プロジェクトのみを除外したいが、推移的な依存関係を取得したい。IvyDE ワークスペース リゾルバーの動作を複製する必要がありますが、Eclipse の外部にあります。

与えられたプロジェクト構造:

  • プロジェクト/
    • local.module1/
      • 置き場/
      • ライブラリ/
      • build.xml
      • アイビー.xml
        • <dependency org="local" name="local.module2" />
    • local.module2/
      • 置き場/
      • ライブラリ/
      • build.xml
      • アイビー.xml
        • <dependency org="external" name="library1" />
    • common.xml
    • build.xml

local.module1ローカル プロジェクト (local.module2) を除くすべての推移的な依存関係 (local.module2、external.library1) を取得できるようにしたいので、実質的にはexternal.library1.

これから、ローカル プロジェクトへの直接参照と外部ライブラリへの jar 参照で構成されるビルド クラスパスを構築したいと考えています。module1 の場合:

  • ../local.module2/bin
  • lib/external.library1-1.0.jar

なぜだろうと疑問に思われる方のために、最小限の変更でアイビーを既存のビルドシステムに適合させようとしています。

4

2 に答える 2

0

ファイルに除外エンティティivy.xmlを追加します。

<dependency org="com.vegicorp"   name="flubaster"    
    conf="compile->default"   rev="3.3">
    <exclude org="com.local"/>
</dependency

これにより、ローカル jar を保存するときに「com.local」または組織と呼ばれるものから何かをダウンロードできなくなります。

(この特定のプロジェクトの jar について話している場合を除き、その場合は、それらはivy.xmlファイルにまったく含まれるべきではありません)。

于 2013-07-11T19:50:43.453 に答える
0

私は最近、ant を使用した既存のビルド プロセスを維持しながら、maven の世界からいくつかの推移的な依存関係をフェッチするためだけに、レガシー プロジェクトに部分的なアイビーを統合するという同じ問題に直面しました。また、ダミーの jar に解決される偽のローカル ファイルシステム リゾルバーを使用して、ivy で公開するプロジェクト モジュールを回避する必要がありました。

ivysettings.xml

<ivysettings>
    <settings defaultResolver="default">
        <property name="local.maven2.dir" value="${user.home}/.m2/repository/" override="false"/>
        <property name="local-project.cache.dir" value="${ivy.settings.dir}/cache" override="false"/>
    </settings>
    <caches resolutionCacheDir="${local-project.cache.dir}" lockStrategy="artifact-lock" useOrigin="true">
        <cache name="local-project" basedir="${local-project.cache.dir}" useOrigin="true"/>
    </caches>
    <resolvers>
        <chain name="default">
            <filesystem name="local-maven-2" m2compatible="true" checkmodified="true" changingPattern=".*SNAPSHOT">
                <artifact pattern="${local.maven2.dir}/[organisation]/[module]/[revision]/[module]-[revision].[ext]"/>
                <ivy pattern="${local.maven2.dir}/[organisation]/[module]/[revision]/[module]-[revision].pom"/>
            </filesystem>
            <ibiblio name="central" m2compatible="true"
                     root="http://repo1.maven.org/maven2/"/>
        </chain>
        <filesystem name="local-project" force="true" checkmodified="true" changingPattern=".*" cache="local-project">
            <artifact pattern="${ivy.settings.dir}/dummy.jar"/>
            <ivy pattern="${ivy.settings.dir}/[module]-ivy.xml"/>
        </filesystem>
    </resolvers>
    <modules>
        <module organisation="example.com" resolver="local-project"/>
    </modules>
</ivysettings>

アイビーでより良いアプローチを見つけることができなかったため、アリからダミージャーを除外する必要がありました:

    <ivy:retrieve pattern="${dependency.export.dir}/[conf]/[artifact](-[revision]).[ext]" type="jar,bundle"/>
    <delete>
        <fileset dir="${dependency.export.dir}">
            <include name="**/*@local-project.jar"/>
        </fileset>
    </delete>

ivy で提供された依存関係を除外する便利な方法を見つけるのにまだ苦労しています。

サンプル プロジェクト ソースに興味がある場合は、 IVY-1443バグの添付ファイルで見つけることができます。

于 2013-10-10T10:59:17.810 に答える