2

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

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

就我而言,最好的选择是什么?是否可以使用 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

构建.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>

笔记:

  • 远程模块没有常春藤文件。这会强制您指定要检索的工件。
  • 此示例使用额外的属性来指示缩小的文件。
  • Javascript 依赖项映射到“javascript”配置(请参阅构建文件中“检索”任务的使用)。

常春藤设置.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 解析器。
  • URL 中使用了可选的额外属性
于 2013-02-19T18:39:03.987 回答