我的ANT中有以下代码片段,它将我的项目编译为swf文件:
<target name="my target">
<mxmlc file="${APPS_DIR}//@{appName}.mxml"
output="${DEPLOY_APPS_DIR}/@{appName}.swf"
actionscript-file-encoding="UTF-8"
keep-generated-actionscript="false"
optimize="true"
debug="${DEBUG_TF}"
locale="en_US"
static-rsls="false"
static-link-runtime-shared-libraries="false"
verify-digests="false">
<!-- BEGIN code A -->
...
...
...
<!-- END code A -->
</mxmlc>
</target>由于我有很多文件以类似的方式使用代码A,所以我希望创建一个可分离的文件,其中包含这些代码。
但是,我如何从主ant文件中调用它呢?
发布于 2012-06-20 07:51:25
我找到了解决办法。同时我自己回答并问。我被发现是这里。
您可以使用XML的方式包含外部文件,并让解析器为Ant完成以下工作:
<?xml version="1.0"?>
<!DOCTYPE project [
<!ENTITY common SYSTEM "common.xml">
]>
<project name="test" default="test" basedir=".">
<target name="setup">
...
</target>
&common;
...
</project>发布于 2012-06-20 10:53:09
使用import。它将执行与实体包括,相同的操作,但它还将赋予您重写目标的能力,并提供特殊属性,如导入的ant文件的路径。来自import文档:
因此,如果我导入一个名为builddocs的docsbuild.xml文件,我可以获得它的路径为ant.file.builddocs,类似于主构建文件的ant.file属性。
更新(因为我没有正确阅读原始问题)
在导入的文件中,创建一个presetdef,如下所示
<presetdef name="mxmlc" uri="com.chercheinfo">
<mxmlc>
<!-- BEGIN code A -->
...
...
...
<!-- END code A -->
</mxmlc>
</presetdef>然后,可以将目标更改为:
<target name="my target">
<kaissun:mxmlc file="${APPS_DIR}//@{appName}.mxml"
output="${DEPLOY_APPS_DIR}/@{appName}.swf"
actionscript-file-encoding="UTF-8"
keep-generated-actionscript="false"
optimize="true"
debug="${DEBUG_TF}"
locale="en_US"
static-rsls="false"
static-link-runtime-shared-libraries="false"
verify-digests="false">
</kaissun:mxmlc>
</target>(您需要将以下属性xmlns:kaissun="com.chercheinfo"添加到project元素中,以便将kaissun绑定到com.chercheinfo)
您也可以使用presetdef预置公共属性。例如,
<presetdef name="mxmlc" uri="com.chercheinfo">
<mxmlc actionscript-file-encoding="UTF-8"
keep-generated-actionscript="false"
optimize="true"
locale="en_US"
static-rsls="false"
static-link-runtime-shared-libraries="false"
verify-digests="false">
<!-- BEGIN code A -->
...
...
...
<!-- END code A -->
</mxmlc>
</presetdef>会让你把目标缩小到
<target name="my target">
<kaissun:mxmlc file="${APPS_DIR}//@{appName}.mxml"
output="${DEPLOY_APPS_DIR}/@{appName}.swf"
debug="${DEBUG_TF}">
</kaissun:mxmlc>
</target>:D
https://stackoverflow.com/questions/11105285
复制相似问题