让我先说我是 Ant 新手。例如,我两天前才开始学习它以完成这项任务。
我想做的是创建一个调用其他几个蚂蚁脚本的“主”蚂蚁脚本。例如:
Project A
- contains build.xml, target "makeProjectAjar"
- output: A.jar
Project B
- contains build.xml, target "makeProjectBjar"
- output: B.jar
Project C
- contains build.xml, target "makeProjectCjar"
- output: C.jar
Project D
- contains build.xml, target "finalPackage"
- Must first build Project A, Project B, Project C
- Copy A.jar, B.jar, C.jar to Project D
- Package all of this into D.jar
现在,我已经为 A、B 和 C 工作了所有单独的构建。我的意思是我可以从这些文件夹中的任何一个运行“ant”,它将构建项目并生成一个 jar 文件。如果我以这种方式构建 A、B 和 C,我有 3 个 jar 文件。然后我可以将它们复制到 D 中并将其打包到最终的 jar 中。这很好用。
但我想要的是能够从项目 D 的 build.xml 中触发 A、B 和 C 构建。我试过这个:
<?xml version="1.0" encoding="UTF-8"?>
<project name="CommonJava" default="makeCommonJavaJar" basedir=".">
<import file="../Common/build.xml"/>
<import file="../CommonAndroid/build.xml"/>
<target name="makeCommonJavaJar" description="Create a jar for the CommonJava project"
depends="clean">
<mkdir dir="build" />
<jar jarfile="./build/commonjava.jar" includes="*.class" />
</target>
<target name="clean">
<delete dir="build" />
</target>
<target name="build+package" description="Build all prerequisites and package them">
<antcall target="makeCommonJar"/>
<antcall target="makeAndroidJar"/>
</target>
</project>
makeCommonJar 是 Common/build.xml(项目 A)中的一个目标,而 makeAndroidJar 是 ../CommonAndroid/build.xml(项目 B)中的一个目标。但是,似乎在使用时<import>
,它从调用文件夹的上下文中运行。这意味着项目 B 引用的资源不可用,因为它是从项目 D 运行的。这有意义吗?
长问题短......使用Ant,我如何在其他项目中调用build.xml文件以便首先构建这些项目?