Wednesday, July 18, 2007

Build flex with Maven

ที่บริษัทฯใช้ maven ในการ build project และควบคุม dependency
ตอนนี้เริ่มมี flex component เข้ามาปะปนใน java project ด้วย
ก็เลยอยากให้ process กับ project structure ที่ใช้พัฒนา flex
เป็นมาตรฐานเดียวกัน

search ดูใน google พบว่ามีคนทำ plugin อยู่ 2 ราย
แต่รายที่ลองแล้ว work ก็คือ
maven-flex2-plugin

เป้าหมายของ maven-flex2-plugin ก็คือ
การช่วย build และ สร้าง package swc (flex library) หรือ swf (flex application) ให้เรา
การใช้งาน ก็เริ่มด้วยการสร้าง pom.xml
<project>
<modelVersion>4.0.0</modelVersion>

<groupId>cnug</groupId>
<!-- ชื่อของ artifact -->
<artifactId>hangman</artifactId>
<version>1.0</version>
<!-- ชนิดของ package -->
<packaging>swf</packaging>
<properties>
<flex.home>/home/pphetra/dev/flex</flex.home>
</properties>
<!-- PLUGIN REPOSITORIES -->
<pluginRepositories>

<pluginRepository>
<id>central</id>
<name>Central Maven Repository</name>
<url>http://repo1.maven.org/maven2</url>
</pluginRepository>

<pluginRepository>
<id>maven-snapshots</id>
<name>Maven Snapshots Repository</name>
<url>http://snapshots.maven.codehaus.org/maven2</url>
</pluginRepository>

<pluginRepository>
<id>israfil</id>
<name>israfil Repository</name>
<url>http://www.israfil.net/maven2</url>
</pluginRepository>

</pluginRepositories>
<build>
<plugins>
<plugin>
<groupId>net.israfil.mojo</groupId>
<artifactId>maven-flex2-plugin</artifactId>
<version>1.0</version>
<extensions>true</extensions>
<configuration>
<useNetwork>true</useNetwork>
<strict>true</strict>
<warning>true</warning>
<!-- application mxml file -->
<main>main.mxml</main>
</configuration>
</plugin>
</plugins>
</build>
</project>


ส่วน project structure, เราจะวาง code ของ flex ไว้ใน
src/main/flex

ตัวอย่าง application hangman ที่ผมลองสร้างดู
ผมวาง code ไว้ใน directory แบบนี้

+ src
+ main
+ flex
- main.mxml
+ assets
- win.png
- lose.png
- mistake0.png
...
+ hangman
+ core
- Game.as
+ ui
- GameGraphics.as
- Unreveal.as
- Letters.as

Related link from Roti