簡體   English   中英

如何動態添加Ivy到Ant

[英]How to add Ivy to Ant dynamically

通常,要使Ivy任務可用於Ant構建,您需要:

  1. ivy.jar添加到${ANT_HOME}/lib
  2. xmlns:ivy="antlib:org.apache.ivy.ant"聲明添加到build.xml的<project>元素中。
  3. 在build.xml中添加一個<taskdef>聲明,引用ivy.jarantlib.xml文件,其中定義了所有其他任務。

除了第一步(將ivy.jar添加到${ANT_HOME}/lib之外 ,我想完成上述所有操作。 我想讓ivy.jar住在我的項目中的某個地方,例如,在lib/buildtime/ivy.jar ,並以某種方式引用lib/buildtime/ivy.jar作為Ivy所在的位置。

這可能嗎? 如果是這樣,怎么樣? 如果沒有,為什么? 提前致謝!

如果常春藤罐位於標准ANT庫目錄中,則不需要taskdef(步驟3)。

我建議包括一個特殊的“bootstrap”目標,它將安裝常春藤罐。 完成此操作后,ivy可以將所有其他依賴項(包括第三方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>

筆記:

  • “bootstrap”目標只需要在新的開發環境中運行一次。 一旦安裝,常春藤罐可用於所有未來的ANT運行。
  • 此示例不使用“$ ANT_HOME / lib”(您可能沒有寫入權限)。 相反,它使用鮮為人知的“$ HOME / .ant / lib”目錄來實現相同的目的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM