2

依存関係を管理するためにIvyを使い始めましたが、今度はIvyを使用してjQueryやその他の一般的なJavaScriptライブラリなどを解決したいと思います。

ただし、たとえば、jQueryで取得できる最善の方法は、多数のフォルダーとjQueryの2つのバリアント(通常と最小化)を含むjarです。

私の場合の最良の選択肢は何ですか?Ivyを使用してjquery.min.jsだけをフェッチすることは可能ですか?または、フェッチしたjarを解凍して、必要なファイルだけを使用するために、いくつかのターゲットを追加する必要がありますか?

4

1 に答える 1

3

最も簡単な解決策は、ivyのURLリゾルバーを使用してjavascriptファイルを直接取得することです(以下の例を参照)。

より完全な(そして複雑な)解決策は、パッケージャーリゾルバーを使用するか、必要なファイルをホストするためのリポジトリーをセットアップすることです。

├── build.xml
├── ivysettings.xml
├── ivy.xml
└── build
    └── js
        ├── jquery.js
        ├── jquery-min.js
        ├── jquery-migrate.js
        └── jquery-migrate-min.js

build.xml

<project name="demo" default="build" xmlns:ivy="antlib:org.apache.ivy.ant">

    <target name="resolve">
        <ivy:resolve/>
    </target>

    <target name="build" depends="resolve">
        <ivy:retrieve pattern="build/js/[artifact](-[classifier]).[ext]" conf="javascript"/>
    </target>

    <target name="clean">
        <delete dir="build"/>
    </target>

    <target name="clean-all" depends="clean">
        <ivy:cleancache/>
    </target>

</project>

ノート:

  • ivy取得タスクは構成を使用します。これにより、ビルド内のさまざまな場所にアーティファクトを配置できます。

ivy.xml

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
    <info organisation="com.myspotontheweb" module="demo"/>

    <configurations>
        <conf name="javascript" description="JS dependencies"/>
    </configurations>

    <dependencies>
        <dependency org="com.jquery" name="jquery" rev="1.9.1" conf="javascript->default">
            <artifact name="jquery" type="js"/>
            <artifact name="jquery" type="js" e:classifier="min"/>
        </dependency>

        <dependency org="com.jquery" name="jquery-migrate" rev="1.1.1" conf="javascript->default">
            <artifact name="jquery-migrate" type="js"/>
            <artifact name="jquery-migrate" type="js" e:classifier="min"/>
        </dependency>
    </dependencies>

</ivy-module>

ノート:

  • リモートモジュールにはivyファイルがありません。これにより、取得するアーティファクトを指定する必要があります。
  • この例では、追加の属性を使用して、縮小されたファイルを示します。
  • Javascriptの依存関係は、「javascript」構成にマップされます(ビルドファイルでの「取得」タスクの使用を参照)。

ivysettings.xml

<ivysettings>
    <settings defaultResolver="central"/>
    <resolvers>
        <ibiblio name="central" m2compatible="true"/>
        <url name="jquery">
            <artifact pattern="http://code.jquery.com/[artifact]-[revision](.[classifier]).[ext]"/>
        </url>
    </resolvers>
    <modules>
        <module organisation="com.jquery" resolver="jquery"/>
    </modules>
</ivysettings>

ノート:

  • デフォルトのリポジトリはMavenCentralです。jqueryモジュールは、一致するURLリゾルバーにマップされます。
  • オプションの追加属性がURLで使用されます
于 2013-02-19T18:39:03.987 に答える