如何使用Ant派生相对路径

时间:2009-08-28 16:57:27

标签: flex ant path mxmlc

我正在使用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 build 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遍历目录hiearchy,直到它到达根build-imports.xml,然后我设置了project.root.dir。

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

考虑到上述信息,我如何采用如下的已知路径:
$ {} project.root.dir / SRC /应用
并导出一个目录路径,如:
$ {project.root.dir} / bin中调试/应用

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

1 个答案:

答案 0 :(得分: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>