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进行使用。
分享到:
相关推荐
xml文件解析,可以实现XML文件的解析功能
minixml2.5最新的版本。 嵌入式xml 解析、查找、生成、遍历 ...这个压缩包,里下载完了,直接就可以在liunx下编译安装。 如果是在windows下的话,只需要根据readme.txt的提示,修改一个小地方,就可以运行。非常方便。
About MXML programming files and Flex usage.
flex4+arcgis10的例子,和官网上的一样。。。方便大家研究,谢谢 。。。。。。。。。。。。。。。。。。。。。。
Flex4视频教程_02-02用mxml自定义事件.rar
Flex 4 对自定义类的数据绑定,附件是一个mxml文件和自定义类的as文件。
1. In Adobe Flash Builder, create a new Flex project (File -> New -> Flex project). 2. Copy all the contents of the ArcGIS_Flex\samples\src folder to src folder of the Flex project created above. 3....
mxml-2.5,非常小巧好用的xml组织与解析的库的源代码。是msxml的绝佳替代品,不依赖任何其他库,操作也非常方便。
This is a Flex UIComponent that can be used 谋n a FLEX 3 mxml application as component written in action script 3.0, provides you to create items that cab be filled from an XML or Query ResultSet or ...
abode flex BlazeDS 源码
mxml-2.12.tar.gz
flex -MXML语法,介绍flex 的 mxml的基本语法构成,适合一般学习者使用
XML文件的读写操作源码,生成XML文件操作的库文件,实现对XML文件的读写操作。
非常好用的XML解析库mxml-2.2.1.tar.gz
mxml开源项目
Mini-XML是一个小型的开源的XML解析器,采用 C 语言开发。该解析器最大的特点就是小型、无须依赖其他类库,只需要 GCC 编译器 和 make 程序即可编译,支持 UTF-8/UTF-16 编码。
pdf格式的flex的mxml语法,适合想学习flex的新手
如果你的flex插件出现mxml无法打开的问题,请下载此文件,同时参考:http://www.tekool.net/blog/2008/06/28/flex-builder-3-plugin-dont-work-with-eclipse-34/或者:...
一个用C语言实现的XML编解码软件,可用在Linux/Windows系统下。
关于Flex4不生成mxml对应的html文件的解决方法,有时候mxml文件编译时没有生成对应的swf文件和html文件。