2009-10-05 49 views
0

我想从给定的ActionScript类列表中编译一个SWC文件。我正在使用compc编译器。问题是,有太多的类被分组到多个名称空间中,我发现指定要包含在SWC中的每个单独的类非常繁琐。有没有更简单的方法来做到这一点,比如简单地指定这些类的根目录?如何使用多个名称空间编译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> 

这可能吗?

回答

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> 
+0

我会试试这个,但太糟糕了,我正在使用MSBuild ... ...叹:( – Draco 2009-10-05 14:03:18

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> 
相关问题