我正在努力在我的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中的所有其他实际操作以及我可以在哪里找到它们的文档。
答案 0 :(得分:1)
在我的build.xml中,有一行,就在您的截止点下方,显示为
<setup />
如果那是你的,那就是你的罪魁祸首。
答案 1 :(得分:0)
任何包含在构建文件顶层(即任何目标之外)的任务都会自动包含在一个隐式初始化目标中,该目标在构建运行时运行,无论您指定的是哪个实际目标。
因此,安装任务的taskdef
元素声明了此任务,但是下一行<setup />
,因为它是构建文件的顶层,将导致每次执行任务你在这个构建文件上运行ant。