はじめに
今回は、flexmojos-maven-pluginでFlex-AIRアプリを作ろう!というのがテーマです。このMavenプラグインを使ってうれしいことは
- 無償である。
- MavenリポジトリにアップされているFlex-SDKを利用できるのでダウンロード、インストールなどが不要である。
それでは、Getting Started!!
環境
OS | Windows XP |
---|---|
ビルドツール | Maven 3.0.3 ※mvnコマンドが実行できるように設定しておきます。 |
作業フォルダ作成
とりあえずCドライブ直下にプロジェクトフォルダを作成します。コマンドプロンプトを開いて以下のコマンドを実行します。
cd c:\ mkdir maven-air cd maven-air作成した作業フォルダ作成に移動しておきます。
pom.xmlファイルを作る
コマンドプロンプトから以下のコマンドを実行します。mvn archetype:generate ^ -DarchetypeRepository=http://repository.sonatype.org/content/groups/flexgroup ^ -DarchetypeGroupId=org.sonatype.flexmojos ^ -DarchetypeArtifactId=flexmojos-archetypes-application ^ -DarchetypeVersion=4.0-beta-3
archetypeVersionについて
現時点での最新と思われる 4.0-beta-3 を指定します。
groupId、artifactId、versionは以下のようにします。現時点での最新と思われる 4.0-beta-3 を指定します。
groupId | mydomain.com |
---|---|
artifactId | my-air |
version | 1.0-SNAPSHOT |
コマンド実行後、プロジェクトフォルダとpomファイルが生成されます。
次に生成されたpomファイルを以下のような感じで編集します。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>mydomain.com</groupId> <artifactId>my-air</artifactId>1.0-SNAPSHOT swf my-air Flex Main 4.5.0.17855 ${basedir}/src/main/resources/sign.p12 geheim <sourceDirectory>src/main/flex</sourceDirectory> <testSourceDirectory>src/test/flex</testSourceDirectory> <groupId>org.sonatype.flexmojos</groupId> <artifactId>flexmojos-maven-plugin</artifactId> 4.0-beta-3 true <flexBuilderCompatibility>true</flexBuilderCompatibility> <sourceFile>${application.name}.mxml</sourceFile> <descriptorTemplate>${basedir}/src/main/flex/${application.name}-app.xml</descriptorTemplate> ${keystore.file} ${keystore.password} <includeFileSets> <fileSet>src/main/resources/embedded </fileSet> </includeFileSets> *.* sign-air <groupId>com.adobe.flex.framework</groupId> <artifactId>flex-framework</artifactId> ${flex.framework.version} pom <groupId>com.adobe.flexunit</groupId> <artifactId>flexunit</artifactId> 0.85 swc test <groupId>com.adobe.flex.framework</groupId> <artifactId>air-framework</artifactId> ${flex.framework.version} pom <groupId>com.adobe.flex</groupId> <artifactId>compiler</artifactId> ${flex.framework.version} pom <groupId>com.adobe.flex.compiler</groupId> <artifactId>adt</artifactId> ${flex.framework.version} <pluginRepositories> <pluginRepository> flexmojos http://repository.sonatype.org/content/groups/flexgroup flexmojos http://repository.sonatype.org/content/groups/flexgroup </pluginRepository> </pluginRepositories></project> createCertificateKey ${basedir}/src/main/resources/sign.p12 <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> 1.1.1 generate-cert generate-resources exec java <workingDirectory>${basedir}/src/main/resources</workingDirectory>-classpath <classpath/>com.adobe.air.ADT -certificate -cn AirPackage 2048-RSA sign.p12 geheim
CertificateKeyファイルについて
ビルドの度にCertificateKeyファイルを作ってAIRパッケージするとAIRインストール時にエラーが出る。
なのでprofile設定を利用してCertificateKeyファイルが無い時にだけ生成するようにします。
(同じCertificateKeyファイルを使ってパッケージしないといけないようだ)
sign-airゴールの設定をうまくやればこのprofile設定は不要かもしれません。
わたしはよく分からなかったのでexec-maven-pluginでCertificateKeyファイルを生成する方法にしました。
ビルドの度にCertificateKeyファイルを作ってAIRパッケージするとAIRインストール時にエラーが出る。
なのでprofile設定を利用してCertificateKeyファイルが無い時にだけ生成するようにします。
(同じCertificateKeyファイルを使ってパッケージしないといけないようだ)
sign-airゴールの設定をうまくやればこのprofile設定は不要かもしれません。
わたしはよく分からなかったのでexec-maven-pluginでCertificateKeyファイルを生成する方法にしました。
テンプレートファイル作成
AIRパッケージのためのテンプレートファイル作成します。ファイル名は 『Main-app.xml』 として、『c:\maven-air\my-air\src\main\flex』 フォルダに置きます。
Main-app.xml
<?xml version="1.0" encoding="UTF-8"?>com.mydomain.MyApp Main My Application 1.0 <initialWindow>my-air-1.0-SNAPSHOT.swf true 800 600 </initialWindow>
プロジェクト構成の確認
確認の前に embedded フォルダを作成します。コマンドプロンプトを開いて以下のコマンドを実行します。
mkdir C:\maven-air\my-air\src\main\resources\embeddedこの時点で以下のようなファイル構成になっているか確認します。
- C:\maven-air
- my-air
- src
- main
- flex
- Main.mxml
- Main-app.xml
- resources
- embedded
- flex
- test
- flex
- mydomain
- com
- TestApp.as
- com
- mydomain
- flex
- main
- pom.xml
- src
- my-air
sign-airゴールについて
embedded フォルダを作るのを忘れるとビルドの時のsign-airゴール実行に
NullPointerExceptionが出るので気をつけましょう。
embedded フォルダを作るのを忘れるとビルドの時のsign-airゴール実行に
NullPointerExceptionが出るので気をつけましょう。
ビルド!!
いよいよビルドの瞬間がやって参りました。うまくいきますかねぇ?
ドキドキしますね!
それでは pom.xml ファイルのあるプロジェクトフォルダに移動してコマンドプロンプトから以下のコマンドを実行!!!
cd c:\maven-air\my-air mvn clean package -Dmaven.test.skip=true
ここに来て残念なお知らせが・・・
テスト実行時、 Flash Playerか見つからない等のエラーが出てしまいます。
(わたしの環境だけなのかもしれませんが・・・)
PATH変数やmvnコマンドの引数にFlashPlayer.exeを使いしてみたりしたのですがうまくいきませんでした。
なので今回、テストは見送りです。
わたしの設定の仕方が間違っているのか、プラグインがおかしいのかよく分かりません。
まぁオープンソースなのでそんなものです。
いつかソースコードを眺めてみたいと思っています。
コマンド実行後、targetフォルダ直下に my-air-1.0-SNAPSHOT.air ファイルが出力されます。テスト実行時、 Flash Playerか見つからない等のエラーが出てしまいます。
(わたしの環境だけなのかもしれませんが・・・)
PATH変数やmvnコマンドの引数にFlashPlayer.exeを使いしてみたりしたのですがうまくいきませんでした。
なので今回、テストは見送りです。
わたしの設定の仕方が間違っているのか、プラグインがおかしいのかよく分かりません。
まぁオープンソースなのでそんなものです。
いつかソースコードを眺めてみたいと思っています。
このファイルをダブルクリックするとAIRインストーラーが起動します。
あとは適当にインスールするフォルダを選択して完了です。
AIRアプリのインストールに失敗する場合
同じAIRアプリを違うCertificateKeyファイルでパッケージするができないようです。
そんな時は、コントロールパネルの『プログラムの追加と削除』から一旦AIRアプリを削除してから
再度my-air-1.0-SNAPSHOT.air ファイルを実行してみよう。
同じAIRアプリを違うCertificateKeyファイルでパッケージするができないようです。
そんな時は、コントロールパネルの『プログラムの追加と削除』から一旦AIRアプリを削除してから
再度my-air-1.0-SNAPSHOT.air ファイルを実行してみよう。
おわりに
とりあえずは、無償でFlex-AIRアプリがそこそこお手軽に作れる環境が整ったとは思いますがいくつか問題点は残りました。(テストなど)
ここがFlashBuilderを購入するか悩むところです。
仕事ならばFlashBuilder購入なのでしょうが
趣味程度ならflexmojos-maven-pluginで十分なのでしょうかね?
むむ~
flexmojos-maven-pluginのソース読む元気ないし
FlashBuilderの安いものなら3万円くらいなので買おうかしら?
- 参考URL
- http://blog.flex-mojos.info/
- http://flexmojos.sonatype.org/getting-started.html
- https://docs.sonatype.org/display/FLEXMOJOS/Home
- https://docs.sonatype.org/display/FLEXMOJOS/Building+an+AIR+Application
- https://repository.sonatype.org/content/sites/maven-sites/flexmojos/latest/plugin-info.html
- http://code.google.com/p/jianwikis/wiki/MavenForFlexAirProject#Flex_AIR_Maven_Project