`

Ant and Flex 用Ant编译MXML文件 - 蚂蚁咬断松紧带(^_^)

阅读更多

Ant and Flex 用Ant编译MXML文件 - 蚂蚁咬断松紧带(^_^)

http://iamin.blogdriver.com/iamin/1173623.html

以下的描述均Flex 1.5为例

一、Flex Server
1、安装后,我们可以在%FLEX_HOME%目录下看到三个.war文件flex.war profiler.war samples.war不用多介绍了吧。

2、%FLEX_HOME%/bin目录下看到许多文件,以下几个执行文件是我们关注的
compc、mxmlc:都是 Macromedia Flex Builder ,两个文件是一模一样的作用,连文件内容也是一样的,不信自己去Beyond Compare一下
可以运行 compc -version 或 mxmlc -version 得到它们的版本号信息 Macromedia Flex Build: 87315.134646
使用方法如下:当然我们可以在Ant里面调用执行文件来进行编译,但是不是很爽啦:(
Usage: compc [-version] [-configuration path] [-flexlib path] [-libpath path] [-systemclasses path] [-g] [-O0] [-profile] [-o path] [-headless] [-contextroot root] [-proxyurl url] [-proxyhttpsurl url] [-proxyallowurloverride] [-gatewayurl url] [-gatewayhttpsurl url] [-remoteallowurloverride] [-webroot directory] [-aspath path] [-genlibdir dir] [-encoding file_encoding] [-namespace uri manifestfile] [-report] [-loglevel error|warn|info|debug] [-manifest manifest] [-root root] foo.mxml

fdb:是调试工具,没有用过,直接运行它,可以看到信息 Macromedia fdb (Flash Player Debugger) [build 87315.134646]
输入help可以看到所有的操作命令与功能简介,quit退出,看自带的文档进行详细查阅,没有研究过它

licensetool:License工具
Usage: license [-install licensekey] [-info] flex-war-filename|flex-war-directory

3、%FLEX_HOME%/lib目录下,赫赫,这个应当是我们更加想关注的哦。
里面有 compc.jar mxmlc.jar fdb.jar licensetool.jar 和 flex-tools.jar 五个.jar文件,不过前四个都只有1k,咋一看,有点晕,肯定是啥也没有的东东,何用?不过。。。
打开一看,里面均是只有META-INF\MANIFEST.MF一个文件
细看mxmlc.jar有Main-Class: flex.tools.Mxmlc
../classes/ flex-tools.jar flex-bootstrap.jar xercesPatch.jar oscache.jar xercesImpl.jar xmlParserAPIs.jar jakarta-oro-2.0.7.jar batik-awt-util.jar batik-bridge.jar batik-css.jar batik-dom.jar batik-ext.jar batik-gvt.jar batik-parser.jar batik-script.jar batik-svg-dom.jar batik-util.jar batik-transcoder.jar batik-xml.jar axis.jar commons-discovery.jar commons-logging.jar jaxrpc.jar saaj.jar wsdl4j.jar concurrent.jar commons-collections.jar
看到这里应当说就有点儿豁然开朗了吧。
继续
../classes/这个在%FLEX_HOME%下没有发现
flex-tools.jar在这个目录下有
其它的也都没有。。。不过,应当一眼扫一下就知道在哪里有了:)
OK,在%FLEX_HOME%/flex.war里/WEB-INF/lib/目录下可以发现flex-bootstrap.jar、flexgateway.jar、commons-collections.jar、commons-beanutils.jar
在%FLEX_HOME%/flex.war里/WEB-INF/flex/jars/目录下可以发现其它的jar包了。
这样基本上所需的枪炮都找到了。要开工了。

二、准备Ant编译所需的文件
1、基本工作,解压%FLEX_HOME%/flex.war到你的项目工作目录%YOUR_PROJECT%下面,或者就扔到%TOMCAT_HOME%\webapps\下面,让Tomcat帮你解压:)
2、把%FLEX_HOME%/flex-tools.jar拷贝到%YOUR_PROJECT%/WEB-INF/flex/jars/下面
3、把%YOUR_PROJECT%/WEB-INF/flex/license.properties拷贝到%YOUR_PROJECT%/WEB-INF/flex/jars/下面
要不然会报告
License Service: Unable to open license file - .\WEB-INF\flex\jars\license.properties (系统找不到指定的文件。)
WARNING License Service: The Flex 1.5 Trial Edition evaluation period will expire in 55 days.
License Service: Flex 1.5 Trial Edition enabled
Warning: applications compiled into standalone SWFs using the Trial and Developer editions of Macromedia Flex expire 1 day after creation.  This restriction is only in place for the Trial and Developer editions of Macromedia Flex.

三、建立Ant编译文件和任务
在%YOUR_PROJECT%下建立build.properties和build.xml文件

1、build.properties文件,内容如下
#Flex Libs Path
flex.lib=./WEB-INF/flex/jars
#Internet Explorer Path
webbrowser=D:/Program Files/Internet Explorer/iexplore.exe
#FlashPlayer
flashplayer=E:/Program Files/Macromedia/Flex/bin/SAFlashPlayer.exe
#WebServer URL
webserver=http://localhost:9080/flex
#Project Path
projectpath=F:/OpenSource/Eclipse/workspace/flex
#.mxml file path without .mxml suffix
mxmlfilepath=01module/User

说明webbrowser、flashplayer、projectpath为绝对路径,请进行相应的修改
重要的!!!webserver为你的Web应用访问地址,这个是用来进行开发RemotingObject时要设置gatewayurl的,如-gatewayurl ${webserver}/amfgateway
mxmlfilepath为你要编译的.mxml文件路径,不要带后缀名
编译时只要ant -Df=yourpath/YourMXML就是编译你的yourpath/YourMXML.mxml了,编译成功后就会用浏览器打开它;
想用FlashPlayer打开,运行ant runflash -Df=yourpath/YourMXML就是编译你的yourpath/YourMXML.mxml并用FlashPlayer打开。

2、build.xml文件,内容如下
<project name="FlexMXMLASCompiler" default="all" basedir=".">
 <property file="${basedir}/build.properties"/>
 <property name="flex.dist.lib" value="${flex.lib}" />
 <property name="app.dir" value="." />
 <property name="config.xml" value="${app.dir}/WEB-INF/flex/flex-config.xml" />
 <property name="src.dir" value="${app.dir}/src" />
 <property name="dest.dir" value="${app.dir}/bin" />
 <property name="library.dest.dir" value="${dest.dir}/libs" />
 <property name="mxmlfile" value="${mxmlfilepath}"/>
 <property name="f" value="${mxmlfile}"/>

 <!-- Include All Needed .Jar Files -->
 <path id="lib.class.path">
  <fileset dir="${flex.dist.lib}">
   <include name="*.jar"/>
  </fileset>
 </path>

 <!-- Init -->
 <target name="init">
  <mkdir dir="${dest.dir}" />
  <mkdir dir="${library.dest.dir}" />
 </target>

 <!-- Compile .mxml to .swf -->
 <macrodef name="makemxml2swf">
     <attribute name="mxmlfilepath"/>
  <sequential>
   <!-- Compile -->
   <java classname="flex.tools.Mxmlc" dir="${app.dir}" fork="true" failonerror="true" classpathref="lib.class.path">
    <arg line="-flexlib '${flex.dist.lib}' -gatewayurl ${webserver}/amfgateway -configuration ${config.xml} -webroot . -o @{mxmlfilepath}.swf @{mxmlfilepath}.mxml" />
   </java>
  </sequential>
 </macrodef>

 <!-- Run .swf By Internet Explorer -->
 <macrodef name="runswfbyie">
     <attribute name="mxmlfilepath"/>
     <sequential>
     <exec executable="${webbrowser}" spawn="true">
      <arg value="${webserver}/@{mxmlfilepath}.swf"/>
     </exec>
    </sequential>
 </macrodef>

 <macrodef name="runswfbyflash">
     <attribute name="mxmlfilepath"/>
     <sequential>
     <exec executable="${flashplayer}" spawn="true">
      <arg value="${projectpath}/${f}.swf"/>
     </exec>
    </sequential>
 </macrodef>

 <!-- Build .mxml to .swf and Access By Internet Explorer -->
 <target name="mxml2swf" depends="init">
  <makemxml2swf mxmlfilepath="${f}"/>
  <runswfbyie mxmlfilepath="${f}"/>
 </target>

 <target name="runflash" depends="init">
  <makemxml2swf mxmlfilepath="${f}"/>
  <runswfbyflash mxmlfilepath="${app.dir}/${f}"/>
 </target>

 <!-- Delete swf File -->
 <target name="clean" description="clean up">
  <delete file="${app.dir}/${f}.swf"/>
 </target>
 <!-- Delete the ${build} and ${dist} directory trees -->
 <target name="cleanAll" description="clean up">
  <delete dir="${dest.dir}"/>
 </target>

 <target name="all" depends="mxml2swf">
 </target>
</project>

3、%YOUR_PROJECT%目录下建立01module/User.mxml文件进行测试之

集成到GEL、Eclipse、IDEA、JBuilder等等IDE工具里就不用详细说了吧:)

四、结果测试
1、通过以上的构建,在程序中以RemoteObject与服务器进行通讯的方式编译运行没有问题,当然要设置好RemoteObject的配置;
懒人就是设置*了:)
flex-config.xml
<remote-objects>
 <whitelist>
  <unnamed>
  <source>*</source>

2、HttpService访问形式编译运行也成功,但是有相对路径问题,浏览器里可以用相对路径,如果想用FlashPlayer进行测试,那就得在mxml里写死绝对的URL了:(,可以通过AS设置一个全局变量来设置网址,其它文件引用使用之即可用FlashPlayer来进行测试了。
注意在mxml里加上<mx:HTTPService useProxy="false"
访问XML数据统一以UTF-8格式进行返回,也没有出现中文乱码问题
设置如下
flex-config.xml
<http-service-proxy>
 <whitelist>
  <unnamed>   
   <url>http://{localserver}/*</url>
   <url>https://{localserver}/*</url>

3、Web Services访问形式编译运行也成功
同样也要注意在mxml里加上<mx:HTTPService useProxy="false"
并且用wsdl代替serviceName进行访问,要不然不能编译通过的。注意哦。
设置如下
flex-config.xml
<web-service-proxy>
 <whitelist>
  <unnamed>   
   <url>http://{localserver}/*</url>
   <url>https://{localserver}/*</url>

BTW:
1、编译后的.swf没有.mxml有Title:),只能自己去建立一个html包一包了。
今后正式部署就把html和swf往生产的机器上面部署即可了。

2、今后用Flex 2.0后,再对2.0进行使用。



分享到:
评论

相关推荐

    mxml-2.9.rar_mxml_mxml-2.9 编译_rhythmeg1_xml

    使用mxmlc命令行工具或者Flex Builder IDE,开发者可以将MXML文件编译成SWF(Shockwave Flash)文件,这个文件可以在Web浏览器中运行,提供丰富的用户体验。 学习和掌握MXML-2.9的关键在于理解其组件模型、事件处理...

    mxml-2.5.rar_minixml-2.7.tar_minixml2_minixml2.5_mxml-2.5_mxml.h

    minixml2.5最新的版本。 嵌入式xml 解析、查找、生成、遍历 ...这个压缩包,里下载完了,直接就可以在liunx下编译安装。 如果是在windows下的话,只需要根据readme.txt的提示,修改一个小地方,就可以运行。非常方便。

    使用ant编译生成flex的swc文件

    本文将深入探讨如何使用Ant工具来编译生成Flex的SWC文件,以此解决传统方式带来的繁琐和不便。 首先,让我们了解基本概念。`Ant`是一款由Apache软件基金会开发的Java构建工具,它基于XML编写构建脚本,可以跨平台...

    About-MXML.zip_flex_mxml

    《深入理解MXML与Flex应用开发》 MXML(Mark-up for the Middle Tier)是一种基于XML的标记语言,主要用于构建Flex应用程序的用户界面。Flex,是Adobe开发的一个开源框架,用于构建富互联网应用程序(Rich Internet...

    ArcGIS_Flex.rar_ArcGIS flex_ArcGIS_Flex_NavigationSkin.mxml_arc

    《ArcGIS Flex应用详解与NavigationSkin.mxml剖析》 ArcGIS Flex是Esri公司开发的一款基于Adobe Flex技术的地理信息系统(GIS)开发框架,它允许开发者构建富互联网应用程序(RIA),将复杂的地理信息数据和分析...

    利用Ant自动编译Flex程序

    SDK包含了许多Flex编译器和所需的库文件,我们需要将其添加到Ant的类路径中,以便Ant能够找到并执行Flex编译任务。 在实际项目中,我们可能有多个Flex源文件,或者需要根据不同的环境编译不同的版本。这时,我们...

    使用Flex Ant Tasks编译工程文件

    本话题将深入探讨如何使用Flex Ant Tasks来编译工程文件,这是一种基于Apache Ant的工具,专为Adobe Flex项目设计,使得Java开发者能够利用Ant的灵活性来管理Flex项目。 Apache Ant是一个广泛使用的Java构建工具,...

    flex_ant.zip

    例如,通过Ant脚本,我们可以配置Flex编译器(通常是mxmlc或compc)来指定源代码路径、目标输出格式、编译时的库或SWC文件、以及各种编译标志。 `Flex_Ant_Tasks`可能包含了以下内容: 1. `build.xml`:这是Ant的...

    Flex_Viewer解析-----结构(1).doc

    为了更清晰地理解Flex_Viewer中文件和组件是如何组织的,下面将详细介绍两个核心文件——`MapManager.mxml`和`Controller.mxml`。 ##### MapManager.mxml 该文件定义了地图的基本配置和操作,包括地图控件的初始化...

    fms.rar_flex_flex and fms_fms_fms rtmp_fms flex

    标题"Fms.rar_flex_flex and fms_fms_fms rtmp_fms flex"和描述中的关键词揭示了这个压缩包包含的是与Adobe Flex和Flash Media Server(FMS)相关的项目资源,主要用于创建一个实时通信应用,例如聊天室。Flex是一种...

    Flex_Viewer解析-----结构(2).doc

    Flex Viewer 是一款基于 Adobe Flex 技术的桌面应用程序框架,用于构建富互联网应用程序(RIA)。在 Flex Viewer 中,用户可以通过自定义的模块(Module)来扩展功能,这些模块通常表现为可交互的侧边栏控件,即 ...

    flex3-cn-api..zip_flex_flex 3 api_flex3 api_flex3 a_flex3 api

    Flex是Adobe公司推出的一种用于创建富互联网应用程序(RIA)的开放源码框架,它基于ActionScript编程语言和MXML标记语言。Flex 3是该框架的一个重要版本,提供了丰富的组件库、强大的数据绑定机制以及改进的图形渲染...

    Flex-Spring-JAVA-BLAZEDS.rar_Flex spring_flex_flex java

    标题中的“Flex-Spring-JAVA-BLAZEDS.rar”提到了三个关键技术:Flex、Spring和BlazeDS,这在IT行业中是关于前端与后端交互的重要技术组合。Flex是Adobe开发的一种用于创建富互联网应用(RIA)的开源框架,主要用于...

    Flash(Flex)反编译及修改

    - 分析MXML:如果应用是用Flex构建的,反编译器还需要解析嵌入在SWF中的MXML数据。 - 输出源代码:反编译完成后,工具会生成AS3或MXML源代码文件,可以进一步编辑和重新编译。 5. **反编译的用途**: - 代码恢复:...

    Flex builder 学习学习 2007-10-08

    10. **文档和教程**:如"Flex Ant脚本模板"和"使用Flex Ant Tasks编译flex工程"这样的资料,是学习如何有效利用Ant构建Flex项目的教程。 综上所述,2007年时的Flex Builder学习涵盖了基础的Flex编程概念、MXML和...

    mxml-3.2_cXX9668_xml_

    - **库文件(.lib/.a)**:编译后的库文件,用于链接到用户的C++项目中。 - **示例程序**:可能包含一些演示如何使用mxml库进行XML操作的代码示例。 - **文档**:可能有库的使用指南或者API参考,帮助开发者理解和...

    flex-menu.rar_Flex 4_Menu_flex_flex Menu_flex 菜单

    在这个"flex-menu.rar"压缩包中,可能包含了实现上述功能的源代码示例或者预编译的SWF文件,以便开发者可以直接查看和学习如何在实际项目中应用Flex 4的菜单组件。 通过深入研究这些示例,开发者可以学习到如何定制...

    mxml-release-2.10.tar.gz

    **mxml-release-2.10.tar.gz** 是一个压缩包文件,包含了 **mxml** 开源项目的源代码和相关资源。**mxml** 项目是针对XML(可扩展标记语言)处理的一个库,主要应用于C语言环境中。XML是一种通用的数据交换格式,...

Global site tag (gtag.js) - Google Analytics