4

通常,要使 Ivy 任务可用于 Ant 构建,您需要:

  1. 添加ivy.jar${ANT_HOME}/lib.
  2. xmlns:ivy="antlib:org.apache.ivy.ant"向您的 build.xml<project>元素添加声明。
  3. 在 build.xml 中添加一个<taskdef>声明,该声明引用定义所有其他任务ivy.jar的文件。antlib.xml

除了第一步(添加ivy.jar${ANT_HOME}/lib)之外,我想完成以上所有工作。我想ivy.jar住在我的项目中的某个地方,比如说,在lib/buildtime/ivy.jar,并以某种方式引用lib/buildtime/ivy.jarIvy 所在的位置。

这可能吗?如果是这样,怎么做?如果不是,为什么?提前致谢!

4

1 回答 1

7

如果 ivy jar 位于标准 ANT 库目录中,则不需要 taskdef(步骤 3)。

我建议包括一个特殊的“引导”目标来安装 ivy jar。完成此操作后,ivy 可以下载所有其他依赖项(包括 3rd 方 ANT 任务)作为构建依赖项。

这是演示该概念的默认构建文件:

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

    <target name="bootstrap" description="Install ivy">
        <mkdir dir="${user.home}/.ant/lib"/>
        <get dest="${user.home}/.ant/lib/ivy.jar" src="http://search.maven.org/remotecontent?filepath=org/apache/ivy/ivy/2.3.0/ivy-2.3.0.jar"/>
    </target>

    <target name="resolve" description="Use ivy to resolve classpaths">
        <ivy:resolve/>

        <ivy:report todir='build/ivy-reports' graph='false' xml='false'/>

        <ivy:cachepath pathid="compile.path" conf="compile"/>
        <ivy:cachepath pathid="test.path"    conf="test"/>
    </target>

    <target name="clean" description="Cleanup build files">
        <delete dir="build"/>
    </target>

    <target name="clean-all" depends="clean" description="Additionally purge ivy cache">
        <ivy:cleancache/>
    </target>

</project>

笔记:

  • “引导”目标只需要在新的开发环境中运行一次。安装后,ivy jar 可用于所有未来的 ANT 运行。
  • 此示例不使用“$ANT_HOME/lib”(您可能没有写入权限)。相反,它使用鲜为人知的“$HOME/.ant/lib”目录,该目录具有相同的目的。
于 2013-06-05T20:42:31.997 回答