2008-09-16 62 views
7

編譯MXML文件,我剛開始使用Flex和現在用的SDK(沒有的Flex Builder)。我想知道從ant構建腳本中編譯mxml文件的最佳方式是什麼。與螞蟻的Flex SDK

回答

10

Flex的SDK附帶了一組Ant任務。更多信息在:

http://livedocs.adobe.com/flex/3/html/help.html?content=anttasks_1.html

以下是編譯的Flex的SWC與螞蟻的例子:

http://www.mikechambers.com/blog/2006/05/19/example-using-ant-with-compc-to-compile-swcs/

邁克室

+0

我可以在某處獲得mxmlc SWC文件,還是必須自己編譯它?我能夠使用mxmlc ant標記編譯actionscript,但相同的腳本不適用於mxml文件。我試圖在我的目標中使用java jar文件,但沒有成功。謝謝! – sutee 2008-09-17 21:41:45

5

我肯定會跟隨Flex中包含的ant任務一起使用,它們使您的構建腳本變得更加清潔。下面是一個簡單構建腳本,將編譯並運行你的Flex項目

<?xml version="1.0"?> 

<project name="flexapptest" default="buildAndRun" basedir="."> 

    <!-- 
     make sure this jar file is in the ant lib directory 
     classpath="${ANT_HOME}/lib/flexTasks.jar" 
    --> 
    <taskdef resource="flexTasks.tasks" /> 
    <property name="appname" value="flexapptest"/> 
    <property name="appname_main" value="Flexapptest"/> 
    <property name="FLEX_HOME" value="/Applications/flex_sdk_3"/> 
    <property name="APP_ROOT" value="."/> 
    <property name="swfOut" value="dist/${appname}.swf" /> 
    <!-- point this to your local copy of the flash player --> 
    <property name="flash.player" location="/Applications/Adobe Flash CS3/Players/Flash Player.app" /> 

    <target name="compile"> 
     <mxmlc file="${APP_ROOT}/src/${appname_main}.mxml" 
      output="${APP_ROOT}/${swfOut}" 
      keep-generated-actionscript="true"> 

      <default-size width="800" height="600" /> 
      <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/> 
      <source-path path-element="${FLEX_HOME}/frameworks"/> 
      <compiler.library-path dir="${APP_ROOT}/libs" append="true"> 
       <include name="*.swc" /> 
      </compiler.library-path> 
     </mxmlc> 
    </target> 

    <target name="buildAndRun" depends="compile"> 
     <exec executable="open"> 
      <arg line="-a '${flash.player}'"/> 
      <arg line="${APP_ROOT}/${swfOut}" /> 
     </exec> 
    </target> 

    <target name="clean"> 
     <delete dir="${APP_ROOT}/src/generated"/> 
     <delete file="${APP_ROOT}/${swfOut}"/> 
    </target> 

</project> 
3

還有另一種選擇 - 這就是所謂的Project Sprouts

這是用Ruby,RubyGems的和耙,可提供許多在Maven和ANT發現功能,內置的系統,但有一個更清潔的語法和更簡單的構建腳本。

例如,上面顯示的ANT腳本應該是這樣的豆芽:

require 'rubygems' 
require 'sprout' 

desc 'Compile and run the SWF' 
flashplayer :run => 'bin/SomeProject.swf' 

mxmlc 'bin/SomeProject.swf' do |t| 
    t.input = 'src/SomeProject.as' 
    t.default_size = '800 600' 
    t.default_background_color = '#ffffff' 
    t.keep_generated_actionscript = true 
    t.library_path << 'libs' 
end 

task :default => :run 

安裝Ruby和RubyGems的之後,您只需調用這個腳本:

rake 

以去除產生文件,運行:

rake clean 

查看可用任務:

rake -T 

豆芽的另一個好處,一旦安裝,是它提供的項目,階級和測試發電機,將讓任何開發箱準備用幾個簡單的命令行操作運行。

# Generate a project and cd into it: 
sprout -n mxml SomeProject 
cd SomeProject 

# Compile and run the main debug SWF: 
rake 

# Generate a new class, test case and test suite: 
script/generate class utils.MathUtil 

# Compile and run the test harness: 
rake test 
+0

謝謝你介紹耙子,但我搜索了關於螞蟻。順便說一句,shell腳本「mxmlc」將是一行。 – chro 2011-09-23 14:14:09