【问题标题】:How to derive a relative path using Ant如何使用 Ant 导出相对路径
【发布时间】:2009-08-28 16:57:26
【问题描述】:

我正在使用 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 专家可以指出一个简单的解决方案。我相信它很有可能作为一个蚂蚁新手,我只是忽略了显而易见的事情。

【问题讨论】:

    标签: apache-flex ant path mxmlc


    【解决方案1】:

    自发布以来,我的构建文件已经有所改进,但我已经解决了这个问题。我相信以下内容可以在前面描述的基本设置中正常工作:

    将此添加到子项目的 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>
    

    【讨论】:

    • 请注意,您不需要先定义路径对象。也可以将 <path location="."/> 包含为 pathconvert 而不是 refid 属性的子项。
    • 我不知道出了什么问题,但上面提到的部分在 linux 中不能正常工作。就我而言,它适用于 Windows。任何人都可以回答吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 2015-09-14
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    相关资源
    最近更新 更多