2012-10-31 67 views
1

我正在尝试使用ANT构建SWC(在Flex 4.6中)。这是我的build.xml文件看起来像现在使用ANT构建swc,找不到catalog.xml

<?xml version="1.0" encoding="UTF-8"?> 
<project name="imanager-framework" basedir="."> 

    <property name="src" location="src"/> 
    <property name="dist" location="dist"/> 
    <property name="FLEX_HOME" value="C:/Program Files (x86)/Adobe/Adobe Flash Builder 4.5/sdks/4.6.0"/>   

    <taskdef resource="flexTasks.tasks" classpath="${basedir}/libs/flexTasksFlash4.jar"/> 

    <target name="clean">  
     <delete dir="${dist}"/> 
    </target> 

    <target name="compile"> 
     <mkdir dir="${dist}"/> 
     <compc output="${dist}/imanager-framework.swc"> 
      <source-path path-element="src" /> 
      <library-path dir="libs" includes="*" /> 
      <include-sources dir="${src}" includes="*" />   
     </compc> 
    </target> 

</project> 

而且flexTasks.tasks看起来像这样

mxmlc=flex.ant.MxmlcTask 
compc=flex.ant.CompcTask 
html-wrapper=flex.ant.HtmlWrapperTask 
asdoc=flex.ant.AsDocTask 

当我运行构建,我得到这个错误

Buildfile: E:\flexspace\imanager\framework\build.xml 
compile: 
    [compc] Loading configuration file C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.5\sdks\4.6.0\frameworks\flex-config.xml 
    [compc] Error: unable to load SWC flexTasksFlash4.jar: could not find catalog.xml within the SWC. 

BUILD FAILED 
E:\flexspace\imanager\framework\build.xml:16: compc task failed 

Total time: 639 milliseconds 

看起来,compc正在尝试将flexTasks jar作为SWC读取。这里发生了什么?

回答

1

看来,你jar库任务的定义是在libs目录为所有swc文件,编译器会尝试使用它作为一个swc库。由于jarswc都是归档文件,因此编译器会提取它们并尝试在里面找到catalog.xml,但jar不是flash库并且不包含它。我建议你把jar放到另一个位置,并且只在文件里面保留swc文件。或指定swc模式

<library-path dir="libs" includes="*.swc" />