如何编译具有多个名称空间的SRC文件

时间:2009-10-05 13:42:18

标签: flex flash swc compc

我正在尝试从给定的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>

这可能吗?

2 个答案:

答案 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>