首页 文章

如何向Ant项目添加依赖项

提问于
浏览
3

我想为我的Ant项目添加依赖项;例如,我想将hibernate依赖项添加到我的项目中 .

我是Ant的新手 . 在我使用maven工具构建项目之前 . 在maven中,很容易将依赖项添加到 pom.xml 文件中 .

My build.xml file

<?xml version="1.0" encoding="UTF-8"?>
<project name="Demo ANT Project-1" default="run">

    <target name="run" depends="compile">
        <java classname="com.company.product.RoundTest">
        <classpath path="staging"/>
        </java>
    </target>


    <target name="compile">
        <javac includeantruntime="false" srcdir="./src" destdir="staging" />
    </target>
</project>

我想在上面的Ant xml文件中添加依赖项 .

1 回答

  • 5

    首先,Ant比Maven更早,因此不包括依赖管理的核心支持 .

    添加常 Spring 藤

    Ivy是Ant的依赖管理框架

    http://ant.apache.org/ivy/

    要启用它,您需要做两件事 . 首先将常 Spring 藤任务命名空间包含在构建文件的顶部:

    <project .... xmlns:ivy="antlib:org.apache.ivy.ant">
    

    其次,您需要将常 Spring 藤 jar 安装到ANT用于其第三方扩展的标准位置之一:

    • $ ANT_HOME / lib

    • $ HOME / .ant / lib

    我喜欢让我的构建独立,所以包括一个自动执行此操作的目标:

    <available classname="org.apache.ivy.Main" property="ivy.installed"/> 
    
    <target name="install-ivy" description="Install ivy" unless="ivy.installed">
        <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"/>
        <fail message="Ivy has been installed. Run the build again"/>
    </target>
    

    使用常 Spring 藤

    这是一个非常广泛的主题,以下是一个简单的例子来下载hibernate jar及其依赖项:

    <target name="resolve" depends="install-ivy" description="Use ivy to resolve classpaths">
        <ivy:cachepath pathid="compile.path">
          <dependency org="org.hibernate" name="hibernate" rev="3.2.7.ga" conf="default">
            <exclude org="javax.transaction"/>
          </dependency>
        </ivy:cachepath>
    </target>
    

    产生以下输出:

    resolve:
    [ivy:cachepath] :: Apache Ivy 2.3.0 - 20130110142753 :: http://ant.apache.org/ivy/ ::
    [ivy:cachepath] :: loading settings :: url = jar:file:/home/mark/.ant/lib/ivy.jar!/org/apache/ivy/core/settings/ivysettings.xml
    [ivy:cachepath] :: resolving dependencies :: #;working@mark
    [ivy:cachepath]     confs: [default]
    [ivy:cachepath]     found org.hibernate#hibernate;3.2.7.ga in public
    [ivy:cachepath]     found net.sf.ehcache#ehcache;1.2.3 in public
    [ivy:cachepath]     found commons-logging#commons-logging;1.0.4 in public
    [ivy:cachepath]     found asm#asm-attrs;1.5.3 in public
    [ivy:cachepath]     found dom4j#dom4j;1.6.1 in public
    [ivy:cachepath]     found antlr#antlr;2.7.6 in public
    [ivy:cachepath]     found cglib#cglib;2.1_3 in public
    [ivy:cachepath]     found asm#asm;1.5.3 in public
    [ivy:cachepath]     found commons-collections#commons-collections;2.1.1 in public
    [ivy:cachepath] :: resolution report :: resolve 373ms :: artifacts dl 10ms
    [ivy:cachepath]     :: evicted modules:
    [ivy:cachepath]     commons-collections#commons-collections;2.1 by [commons-collections#commons-collections;2.1.1] in [default]
        ---------------------------------------------------------------------
        |                  |            modules            ||   artifacts   |
        |       conf       | number| search|dwnlded|evicted|| number|dwnlded|
        ---------------------------------------------------------------------
        |      default     |   10  |   0   |   0   |   1   ||   9   |   0   |
        ---------------------------------------------------------------------
    

    然后可以在您的javac任务中使用此常 Spring 藤托管类路径

    <javac includeantruntime="false" srcdir="./src" destdir="staging" classpathref="compile.path"/>
    

相关问题