4

我正在使用 Ant 和 mxmlc 将 ActionScript 类和 MXML 编译成 swfs,同时保持 Flex Builder (Flash Builder) 项目的默认组织。我的许多 ActionScript 类都位于项目子目录中,因此我的项目按如下方式组织:

MyBigProject
-build-imports.xml
-build.xml

-bin-debug
--src
---flash
---app
----CoolWidget1.swf
---Main.swf
--test

-src
--flash
---app
----build-imports.xml
----build.xml
----CoolWidget1.as
--build-imports.xml
--build.xml
--Main.mxml
-test

此目录结构维护 Flash Builder 项目的默认目录结构,因此我可以从 Flash Builder IDE 执行按钮构建。我已将 Ant 构建 xml 添加到该项目中,因此我也可以从命令行构建。我正在尝试创建可移植的 ant 构建脚本,这些脚本需要最少的更改才能在其他项目中重用。除了派生相对路径之外,我拥有我想要的一切。

项目根目录下的 build-imports.xml 文件包含以下内容:

<project name="project.root.imports">
    <dirname property="project.root.dir" file="${ant.file.project.root.imports}"/>
</project>

而子项目文件夹包含 build-imports.xml 具有以下内容:

<project name="MyBigProject.src.flash.app.imports">
    <import file="../build-imports.xml" />
</project>

请注意,子项目 build-imports.xml 沿着目录层次结构向上走,直到到达根 build-imports.xml,然后我在那里设置了 project.root.dir。

然后我可以使用 ${project.root.dir}/bin-debug 来指定放置我的二进制文件的位置。我唯一的问题是,我不知道如何创建与 src 文件夹下相同的目录结构。我需要能够导出相对路径或执行一些字符串操作来创建新目录。

考虑到上述信息,我如何采用已知路径,例如:
${project.root.dir}/src/app
并派生目录路径,例如:
${project.root.dir}/bin-debug/app

我找到了一些关于 Ant-contribu propertyregex 任务的信息,这将允许一些字符串操作,但我希望那里有一个 Ant 大师可以指出一个简单的解决方案。我相信这很有可能作为 Ant 新手,我只是忽略了显而易见的事情。

4

1 回答 1

2

自从我发布以来,我的构建文件已经发生了一些变化,但我已经解决了这个问题。我相信以下内容将在前面描述的基本设置中正常工作:

将此添加到子项目的 build.xml 中的默认目标

<path id="build.path">
   <pathelement location="." />
</path>
<pathconvert property="build.dir" refid="build.path">
    <map from="${project.root.dir}" to="${project.root.dir}/bin-debug"/>
</pathconvert>
于 2009-08-28T19:34:16.790 回答