RIAMeeting在前面中3篇關于在Flex中使用Maven的文章中,我們對Maven進行了一下掃盲。這篇文章開始進入到Maven開發的實質性部分:使用flex-mojos插件來進行flex項目的開發。
flex-mojos 是一個Maven插件,他為我們提供了一系列maven 操作可以讓我們友善的從源代碼中編譯出 SWC,SWF, AIR 的SWC以及AIR的SWF除此以外,所有你能夠用Flex SDK進行的操作比如html wrapper的生成,RSL,Modules支援都可以做到。
另外,最友善的一點是,當你把項目整合到Maven中并且使用了flex-mojos之後,你可以不需要對項目做任何設定(包括在一個沒有flex sdk的環境下)隻通過一個指令,即可從源代碼編譯出你需要的目标檔案。
下面,我們就一步一步将這個過程設定好:
按照前面的介紹,如果你已經設定好了Java和Maven環境。那麼就可以開始使用flex-mojos了。首先我們先示範一下如何建立一個flex的應用程式項目:
mvn archetype:generate -DarchetypeRepository=http://repository.sonatype.org/content/groups/public -DarchetypeGroupId=org.sonatype.flexmojos -DarchetypeArtifactId=flexmojos-archetypes-application -DarchetypeVersion=3.3.0
這裡簡單解釋一下這個mvn指令:
- archetype:generate 是maven的一個标準的生命周期中的一個,他的作用是建立一個新的項目。
- -DarchetypeRepository=http://repository.sonatype.org/content/groups/public 由于flex-mojos并不位于maven的預設公共倉庫:http://repo1.maven.org/maven2/ , 是以這個參數是為了告訴maven去哪個公共倉庫尋找flex-mojos的庫。
- -DarchetypeGroupId=org.sonatype.flexmojos -DarchetypeArtifactId=flexmojos-archetypes-application -DarchetypeVersion=3.3.0 這三個參數我們放在一起說:groupid和archetypesid 以及 version 組合起來,構成maven系統中用來辨別一個項目的絕對定位坐标。
- groupid(組名)就是我們一般情況下認為你的項目屬于哪個分組,一般以公司域名來命名,比如 com.riameeting.flexmaven 這樣子的group id表示這個項目是在riameeting下flexmaven組中的一個項目。這裡,我們看到這個值是org.sonatype.flexmojos 這個值實際上意味着我們要使用的這個插件(flex-mojos)是在org.sonatype下flexmojos項目組的開發的衆多插件中的一個。
- archetypeid(構件名) 實際上是這個項目自身的一個名字,這裡其具體值是:flexmojos-archetypes-application 這個項目的名字其實告訴我們,他是flexmojos中用來建立 flex應用程式項目的插件。後面我們會看到,當你想建立flex的lib項目時,你使用的将會是另外一個 archetypeid
- version(版本号) 是顯而易見的一個值,指明目前這個插件項目的版本。
在我們繼續前,我需要說明一下,這裡的flexmojos實際上是maven插件,maven中,你所使用的插件也是maven所支援的衆多項目中的一個普通項目,是以,他的辨別也是由maven中的組名,構件名,以及版本号來決定的。 後面我們會看到,由于我們這裡需要建立一個flex的項目,由于你也想用maven管理它,是以,它也會有組名,構件名,以及版本号。
此操作的結果顯示在這裡:
注意,如果運作時,你看到更多的輸出内容,完全是正常的,由于你是第一次運作這個maven 插件,maven會試圖下載下傳他所需要的插件類庫,但是,下次你再運作類似任務的時候,這些内容就不會被再次下載下傳了。

這個操作過程是互動的,因為這裡面需要擷取關于這個項目的一些資訊:
- 組名稱 :
在Flex項目中使用Maven(四)之FlexMojo - 構件名稱:
在Flex項目中使用Maven(四)之FlexMojo - 版本号碼
在Flex項目中使用Maven(四)之FlexMojo - 程式中使用的包名,包名會預設從組名稱中內建,如果你覺得這個組名作為包名沒有問題,則可以什麼都不輸入,直接按回車。前請看淺藍色的框,我們什麼都沒有輸入,預設使用com.riameeting.flexmaven來做包名
- 最終有一個确認彙總你所輸入的資訊來讓你确認,彙總部分,如果确認無誤,則輸入Y或者直接回車确認。否則,輸入N重新輸入你想要的内容。
通過這個操作,我們會建立一個目錄結構,這個目錄結構就是maven預設約定的目錄,同時,還可以幫助你生成一個pom.xml的mvn配置檔案。
這個目錄結構中,在源代碼目錄中分為兩個子目錄:
main
test
main中的flex檔案夾下是主要源代碼
test中的flex檔案夾下則是測試用例的源代碼
pom.xml則是這個項目的mvn配置檔案。
這個時候,你也許會想,我現在雖然有了項目結構目錄了,但是我如何使用FlexBuilder來寫代碼呢?
由于Maven的預設repository裡面并沒有flexmojos插件的一些内容,我們現在需要告訴maven一個指定的公共倉庫來擷取他需要的内容。這個設定可以通過在maven的配置檔案中設定。
打開這個pom.xml檔案,添加如下内容到project标簽中:
添加了這部分内容後(在這裡下載下傳添加完成後的pom檔案 ),我們就可以進入到pom.xml所在的檔案夾,使用
mvn flexmojos:flexbuilder
這個指令,這個指令是flexmojos這個插件中的一個指令,他的作用是為你生成flexbuilder所需的項目配置,以便于你可以把這個項目導入到flexbuilder中去。
這個指令的執行時間會稍長,尤其是你的網絡狀況不太好的情況下,因為flex-mojos會将flex-sdk下載下傳到maven的本地倉庫中。
等這個指令運作完畢後,你就可以在flex builder中導入這個項目,并且開始在flex buider中編寫代碼了。
當代碼編寫完成,并且在沒有任何錯誤的情況下。對項目進行編譯,
- clean: 清除以前的建構物。
- site: 生成項目文檔。
mvn clean package 首先清除target目錄下的上傳編譯的資訊,重新編譯打包
mvn clean package -o 隻在本地
cls:清屏
mvn clean dependency:copy-dependencies package
相當于按順序執行
mvn clean
mvn dependency:copy-dependencies
mvn package
在本系列的下一篇文章中,riameeting會繼續完善這個maven項目,為其加入svn的管理以及私有倉庫的釋出設定等。