常春藤,JavaScript deps,或使用jarred javascript

时间:2013-02-19 11:31:19

标签: javascript ivy

我已经开始使用Ivy来管理我的依赖项,现在我想使用Ivy解决诸如jQuery和其他常见JavaScript库之类的问题。

然而,我能得到的最好,比方说,jQuery是一个包含许多文件夹的jar,以及jQuery的两个变体(正常和最小化)。

在我的案例中,最好的选择是什么?是否可以使用常春藤获取jquery.min.js?或者我应该添加一些目标来解压缩获取的jar并只使用我需要的文件?

1 个答案:

答案 0 :(得分:3)

最简单的解决方案是使用常春藤url resolver直接检索javascript文件(参见下面的示例)。

更完整(和复杂)的解决方案是使用packager resolver或设置存储库来托管您需要的文件。

实施例

├── 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.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>

注意:

  • 远程模块没有常春藤文件。这会强制您指定要检索的工件。
  • 此示例使用extra attributes来指示缩小的文件。
  • Javascript依赖关系映射到&#34; javascript&#34;配置(请参阅&#34;检索&#34;构建文件中的任务)。

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>

注意:

  • 默认存储库是Maven Central。 jquery模块映射到它匹配的url解析器。
  • 网址
  • 中使用了可选的extra attribute