我正在尝试从给定的ActionScript类列表中编译SWC文件。我正在使用compc编译器。问题是有很多类被分组到多个名称空间中,我发现指定要包含在SWC中的每个单独的类非常繁琐。有没有更简单的方法来执行此操作,只需简单地指定这些类的根目录?
目前我有这样的事情:
<?xml version="1.0"?>
<flex-config xmlns="http://www.adobe.com/2006/flex-config">
<output>C:\SomeFolder\testSWC.swc</output>
<compiler>
<source-path>.</source-path>
</compiler>
<include-classes>
<class>SomeNamespaceOne.One</class>
<class>SomeNamespaceOne.Two</class>
<class>SomeNamespaceOne.Three</class>
<class>SomeNamespaceOne.Four</class>
...
<class>SomeNamespaceFifty.One</class>
</include-classes>
</flex-config>
但我想要这样的事情:
<?xml version="1.0"?>
<flex-config xmlns="http://www.adobe.com/2006/flex-config">
<output>C:\SomeFolder\testSWC.swc</output>
<compiler>
<source-path>. </source-path>
</compiler>
<include-classes>
<class>SomeRootDirectoryOfClassesToCompile</class>
</include-classes>
</flex-config>
这可能吗?
答案 0 :(得分:1)
我们想在“Ant”中有类似的东西。
我假设您没有使用Flex Builder。在这种情况下,我肯定会建议使用Adobe提供的Ant和Flex Ant任务。即使你使用Ant,也不容易做你想做的事情,所以我在下面加入我们的代码。
以下是我们的代码。我不记得我从哪里得到了这个想法,所以不能感谢它的来源:)
<pathconvert property="XXX.classes" pathsep=" ">
<fileset dir="${basedir}/XXX/src">
<include name="**/*.as"/>
<include name="**/*.mxml"/>
</fileset>
<compositemapper>
<packagemapper from="${basedir}\XXX\src\*.as" to="*"/>
<packagemapper from="${basedir}/XXX/src/*.as" to="*"/>
<packagemapper from="${basedir}\XXX\src\*.mxml" to="*"/>
<packagemapper from="${basedir}/XXX/src/*.mxml" to="*"/>
</compositemapper>
</pathconvert>
<compc optimize="true" debug="false"
include-classes="${XXX.classes}" output="${BUILD_FOLDER}/XXX.swc">
</compc>
答案 1 :(得分:1)
就像Tanmay所说,你应该使用ANT任务来简化生活,但是更简单的wach包括compc ant任务中的整个目录。如果你只需要在src.dir中包含所有内容,你可以这样做:
<compc output="${target.dir}/foo.swc">
<source-path path-element="${src.dir}"/>
<include-sources dir="${src.dir}">
<include name="**/*" />
</include-sources>
</compc>