2011-09-01 67 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