如何使用依赖Java项目的Ant构建Android项目?

时间:2013-01-29 13:14:10

标签: java android eclipse ant library-project

我有一个Android库项目,AndroidLib,它依赖于我工作区中的Java项目JavaLib。

在Eclipse中,这是通过将JavaLib项目添加到Java 构建路径>来完成的。 AndroidLib的项目,并将其设置为在订单和导出标签中导出,并且构建正常。

然而,在构建AndroidLib时,Ant似乎没有获得对JavaLib项目的依赖(我已经运行了android update lib-project)。 将此依赖项添加到build.xml的最佳方法是什么?

3 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。我以一种非常黑客的方式解决了它。

在AndroidLib / build.xml中(或者在AndroidLib / custom_rules.xml中更好),我定义了一个构建JavaLib的-pre-build目标,并在libs /中复制生成的jar。我还定义了一个-post-package目标来删除复制的jar,否则Eclipse会感到困惑。

<property name="lib.javalib.project.dir" location="${basedir}/../JavaLib" />
<target name="-pre-build">
  <subant buildpath="${lib.javalib.project.dir}" target="package" failonerror="true" />
  <copy todir="${basedir}/libs" failonerror="true" verbose="true">
      <fileset dir="${lib.javalib.project.dir}/target">
          <filename name="javalib*.jar"/>
      </fileset>
  </copy>
</target>
<target name="-post-package">
    <delete verbose="true">
        <fileset dir="${basedir}/libs" includes="javalib*.jar" />
    </delete>
</target>

这个解决方案远非令人满意,但它可以完成工作。

您会在那里找到类似的问题和答案:Android Ant Include Java Library projects

答案 1 :(得分:0)

我会回答我自己的问题:正确执行此操作的唯一方法是使用Ant。

  1. 您需要一个合适的依赖管理系统。 Maven是你唯一真正的选择。
  2. 您需要一个支持Maven的构建系统。我目前再次使用Maven,因为当时它是唯一支持Maven依赖管理的成熟构建工具 - 现在(虽然对于Android Library Projects,因为这些格式尚未最终)Gradle应该是你的构建选择工具。

答案 2 :(得分:0)

我更改了build.xml以运行java项目的ant文件,然后将jar复制到libs文件夹:

    <target name="-pre-compile">
        <ant antfile="build.xml" dir="dependencies/JavaUtils" target="clean"/>
        <ant antfile="build.xml" dir="dependencies/JavaUtils"/>
        <copy todir="${jar.libs.dir}" failonerror="true" file="dependencies/JavaUtils/dist/Java-utils.jar"/>
        <sleep seconds="3"/> <!-- Delay for the file to be recognized after the copy -->
    </target>

这对某人有何帮助。

顺便说一句,我开始阅读有关Gradle的依赖/构建/任何系统的内容,并从中获得了它。啊,回到蚂蚁真是一种解脱......