2011-09-01 66 views
1

我使用ANT将我的东西部署到Tomcat。但是我错过了依赖关系,并且我想添加Ivy,因为它被推荐了。Java,使用Ant和Apache Ivy问题

现在,我已将此添加到我的build.xml文件:

<!-- Ivy settings start--> 

    <condition property="ivy.home" value="${env.IVY_HOME}"> 
     <isset property="env.IVY_HOME" /> 
    </condition> 


    <target name="download-ivy" unless="offline"> 
     <mkdir dir="${ivy.jar.dir}"/> 
      <!-- download Ivy from web site so that it can be used even without any special installation --> 
     <get src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/${ivy.install.version}/ivy-${ivy.install.version}.jar" 
      dest="${ivy.jar.file}" usetimestamp="true"/> 
    </target> 


    <target name="init-ivy" depends="download-ivy"> 
     <!-- try to load ivy here from ivy home, in case the user has not already dropped 
     it into ant's lib dir (note that the latter copy will always take precedence). 
     We will not fail as long as local lib dir exists (it may be empty) and 
     ivy is in at least one of ant's lib dir or the local lib dir. --> 
     <path id="ivy.lib.path"> 
      <fileset dir="${ivy.jar.dir}" includes="*.jar"/> 
     </path> 
     <taskdef resource="org/apache/ivy/ant/antlib.xml" 
     uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/> 
    </target> 

    <target name="go" depends="init-ivy" description="--> resolve dependencies, compile and run the project"> 
    <echo message="using ivy to resolve commons-lang 2.1..."/> 
    <!-- 
    here comes the magic line: asks ivy to resolve a dependency on commons-lang 2.1 and to build an ant path with it from its cache 
    --> 
    <ivy:cachepath organisation="commons-lang" module="commons-lang" revision="2.1" pathid="lib.path.id" inline="true"/> 
    </target> 
<!-- Ivy settings end--> 

有了这个我想共同琅JAR文件添加到我的项目。 这是我得到的输出:

Buildfile: C:\Users\Jansu\workspace\HelloWorld\build.xml 
build: 
deploywar: 
download-ivy: 
     [get] Getting: http://repo2.maven.org/maven2/org/apache/ivy/ivy/2.2.0/ivy-2.2.0.jar 
     [get] To: C:\Users\Jansu\.ant\lib\ivy-2.2.0.jar 
     [get] Not modified - so not downloaded 
init-ivy: 
go: 
    [echo] using ivy to resolve commons-lang 2.1... 
[ivy:cachepath] :: Ivy 2.2.0 - 20100923230623 :: http://ant.apache.org/ivy/ :: 
[ivy:cachepath] :: loading settings :: url = jar:file:/C:/Users/Jansu/.ant/lib/ivy-2.2.0.jar!/org/apache/ivy/core/settings/ivysettings.xml 
[ivy:cachepath] :: resolving dependencies :: commons-lang#commons-lang-caller;working 
[ivy:cachepath]  confs: [default, master, compile, provided, runtime, system, sources, javadoc, optional] 
[ivy:cachepath]  found commons-lang#commons-lang;2.1 in public 
[ivy:cachepath] :: resolution report :: resolve 151ms :: artifacts dl 10ms 
    --------------------------------------------------------------------- 
    |     |   modules   || artifacts | 
    |  conf  | number| search|dwnlded|evicted|| number|dwnlded| 
    --------------------------------------------------------------------- 
    |  default  | 1 | 0 | 0 | 0 || 1 | 0 | 
    |  master  | 1 | 0 | 0 | 0 || 1 | 0 | 
    |  compile  | 1 | 0 | 0 | 0 || 0 | 0 | 
    |  provided  | 1 | 0 | 0 | 0 || 0 | 0 | 
    |  runtime  | 1 | 0 | 0 | 0 || 0 | 0 | 
    |  system  | 1 | 0 | 0 | 0 || 0 | 0 | 
    |  sources  | 1 | 0 | 0 | 0 || 1 | 0 | 
    |  javadoc  | 1 | 0 | 0 | 0 || 1 | 0 | 
    |  optional  | 1 | 0 | 0 | 0 || 0 | 0 | 
    --------------------------------------------------------------------- 
BUILD SUCCESSFUL 
Total time: 2 seconds 

我想它的工作原理.. 现在2个问题:

1)哪里的JAR文件出现在我的项目?

2)我该如何添加其他JAR文件,比如Spring框架文件?

+1

Maven 2/3更容易处理... –

回答

1

此:

<ivy:cachepath organisation="commons-lang" module="commons-lang" revision="2.1" pathid="lib.path.id" inline="true"/> 
</target> 

被称为inline retrieval并告诉艾维从常春藤缓存的罐子将不会被复制到您的项目建设与pathid="lib.path.id"蚂蚁路径。缓存位于$ {user.home} /。ivy2中。

如果要将工件下载到您的项目中,则必须使用retrieve任务并为您的项目定义ivy.xml

+0

在哪个xml文件中我将声明我需要Ivy下载的依赖关系? – Jaanus

+0

ivy.xml - 也许常青藤教程/快速启动将帮助:https://ant.apache.org/ivy/history/latest-milestone/tutorial/start.html – oers

+0

谢谢..现在它正在寻找一些解析器' commons-lang#commons-lang; 2.0:没有找到commons-lang的解析器#commons-lang:检查你的配置#oers – Jaanus