向Ant项目添加外部依赖项(IDEA Android项目)

时间:2014-06-25 11:02:50

标签: java android ant

在提到socket.io-java by nkzawa的文档中,应该使用添加ant依赖项next snippet

<dependency org="com.github.nkzawa" name="socket.io-client" rev="0.1.1-SNAPSHOT"> <artifact name="socket.io-client" type="jar" /> </dependency>

在哪个文件中以及我应该如何包含它?之后我应该如何编译我的申请?

2 个答案:

答案 0 :(得分:1)

为了管理与ant的依赖关系,您需要使用Ivy 但我同意Bart Kiers的观点 - 切换到Gradle,特别是当你已经在使用IDEA时。

答案 1 :(得分:0)

socket.io-client documentation具有误导性。 ANT有一个名为ivy的扩展用于执行依赖关系管理,但默认情况下它没有捆绑。

设置完成后,您可以使用cachepath任务在ivy.xml文件或build.xml中列出项目的依赖项:

<ivy:cachepath pathid="compile.path">
   <dependency org="com.github.nkzawa" name="socket.io-client" rev="0.1.1" />
</ivy:cachepath>

我在下面列出了一个更完整的例子。它详细介绍了如何配置ANT版本以自动设置常春藤。

我不是Android程序员,所以无法推荐最好的构建工具。我可以说的是,在构建过程中添加依赖项管理是一个非常好的主意。 ANT提供更多现代工具,如Maven和Gradle,这些工具都有这个功能。

实施例

的build.xml

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

    <!--
    ================
    Build properties
    ================
    -->
    <available classname="org.apache.ivy.Main" property="ivy.installed"/> 

    <!--
    ===========
    Build setup
    ===========
    -->
    <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>

    <target name="resolve" depends="install-ivy" description="Use ivy to resolve classpaths">
        <ivy:cachepath pathid="compile.path">
           <dependency org="com.github.nkzawa" name="socket.io-client" rev="0.1.1" />
        </ivy:cachepath>
    </target>

    <!--
    ===============
    Compile targets
    ===============
    -->
    <target name="build" depends="resolve" description="Project build logic goes here">
       <javac .... classpathref="compile.path">
       </javac>

       ...
    </target>

    <!--
    ===============
    Clean-up targets
    ===============
    -->
    <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>