Android和Ant - 特别是taskdef和anttasks.jar

时间:2010-11-02 21:05:07

标签: android ant

我正在努力在我的Eclipse源代码上进行Ant构建。最终目标是将Eclipse源作为输入,输出完全进入Eclipse文件结构之外的文件夹。

我使用Ant已经有一段时间了,所以我逐渐注释掉,然后取消注释从命令行构建示例项目时生成的标准build.xml中的位。我要把很多'回声'放进来,以确保它在我让它真正做某事之前得到目录。我从build.xml顶部的一个简单的垃圾目标开始,它回应了'垃圾' - 这个工作正常。

然后我取消注释了这一点:

   <!-- Custom Android task to deal with the project target, and import the
         proper rules.
         This requires ant 1.6.0 or above. -->
    <path id="android.antlibs">
        <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
        <pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
        <pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
    </path>

    <taskdef name="setup"
        classname="com.android.ant.SetupTask"
        classpathref="android.antlibs" />
    <!-- Lots of commented out stuff -->

    <setup />

一旦我让它运行,那么我确实消失了,我得到以下输出

[setup] Android SDK Tools Revision 7
[setup] Project Target: Google APIs
[setup] Vendor: Google Inc.
[setup] Platform Version: 2.1-update1
[setup] API level: 7
[setup]
[setup] ------------------
[setup] Resolving library dependencies:
[setup] ------------------
[setup] Ordered libraries:
[setup] ------------------
[setup]

我当然希望它失败,因为我没有在.properties文件中设置任何输入/输出/ lib目录。我很想知道为什么taskdef本身只在我调用'junk'目标时运行。我还想知道哪些SetupTask和anttasks.jar中的所有其他实际操作以及我可以在哪里找到它们的文档。

2 个答案:

答案 0 :(得分:1)

在我的build.xml中,有一行,就在您的截止点下方,显示为

<setup />

如果那是你的,那就是你的罪魁祸首。

答案 1 :(得分:0)

任何包含在构建文件顶层(即任何目标之外)的任务都会自动包含在一个隐式初始化目标中,该目标在构建运行时运行,无论您指定的是哪个实际目标。

因此,安装任务的taskdef元素声明了此任务,但是下一行<setup />,因为它是构建文件的顶层,将导致每次执行任务你在这个构建文件上运行ant。