#griffon プロジェクトをarchetype から作ってみる

 id:waman さんのエントリを読んでみて、macbookで再度試してみる

 一応公式のデモビデオもあるみたいなのでリンクを張っておきます

 試した環境は以下


Mac Lion(MacBook)
JDK7u5 for MacOSX

 確かにこの手順だけでいける感じ。
ただu4の時に出てなかった終了時にセグメンテーションエラーが出るのはすごく気になっていたり
ただこちらはjavafxのせいだと思うので取り合えずスルーするかな*1


griffon install-archetype javafx
griffon create-app FunctionPlotterFX -archetype=javafx

 groovyfx pluginも同時に入っているようですね。

  • application.properties


#Griffon Metadata file
#Sun Jul 01 11:31:46 JST 2012
app.griffon.version=1.0.0
app.name=functionPlotterFX
app.toolkit=javafx
app.version=0.1
archetype.javafx=0.2
plugins.groovyfx=0.6.1
plugins.javafx=0.6.1

 確かViewをgroovyfx使う形でテンプレートを作るのがarchetypeの考え方だしな。。
Codehaus

 griffon自体は元々
plugin + XXXView.groovy を変更することでマルチ環境対応していた感じで、複合するなら


widgets(コンポネント)
で埋め込んで連携なイメージだったかな。

だから


app.toolkit
archetype.javafx
辺りはあくまでメインViewはこれで作りましたぐらいの認識になるのかも

とおもって色々と調べてみたら
「app.toolkit」に pluginが思いっきり依存するっぽい・・・*2

確かにpluginの設定項目に

  • app.toolkit
  • archetypes *3

が増えたのは認識していたんですけどね・・・

で実際どんな archetype があるか下記のコマンドで


griffon list-archetypes

//griffon central
javafx 2 Griffon JavaFX Archetype
jumpstart 3 Adds typical setup and dialogs
presentation 4 Creates interactive presentations
scala 0 Griffon Scala Archetype
swt 1

//local
default 1.0.0 Used when no archetype is specified
javafx 0.2 Griffon JavaFX Archetype
jumpstart 1.3 Adds typical setup and dialogs
presentation 1.1 Creates interactive presentations
swt 1.0 Default archetype for SWT applications

scala は install-archetype はできないようなので、まだ予定っぽいな・・

OK系)

  • SWT ・・これでようやくgriffon 0.3以降動いてなかったSWTBuilderが使える認識
    • swt plugin のjar自体は3.5.2のようだ
    • SWTBuilder自体の資料は多分探すの大変だと思うので、下記辺りをJDで直接みる感じが良いのかもな・・・
      • $HOME/.griffon/1.0.0/プロジェクト/plugin/swt-0.9.6/groovy-swt-0.5.2.jar


griffon create-app hoge -archetype=swt

インストールはOK、実行時エラー系)

  • JumpStart ・・起動時にダイアログ出すやつだったと思う
    • toolkit自体は app.toolkit=swing


griffon create-app jump -archetype=jumpstart
MVC-Groupの登録がないとエラーが出ている訳ですが
これテンプレート化するまえのサンプルコードでは確かにMVC-Groupの記述があった気がする・・・

2012-07-01 19:58:11,316 [main] ERROR griffon.util.GriffonExceptionHandler - Uncaught Exception
griffon.exceptions.MVCGroupConfigurationException: Unknown MVC type 'jump'. Known types are []
at org.codehaus.griffon.runtime.core.AbstractMVCGroupManager.findConfiguration(AbstractMVCGroupManager.java:73)
at org.codehaus.griffon.runtime.core.AbstractMVCGroupManager.createMVCGroup(AbstractMVCGroupManager.java:186)
at org.codehaus.griffon.runtime.core.AbstractGriffonApplication.createMVCGroup(AbstractGriffonApplication.java:474)
at org.codehaus.griffon.runtime.core.AbstractGriffonApplication.startup(AbstractGriffonApplication.java:313)
at griffon.swing.AbstractSwingGriffonApplication.realize(AbstractSwingGriffonApplication.java:78)
at griffon.swing.AbstractSwingGriffonApplication.run(AbstractSwingGriffonApplication.java:132)
at griffon.swing.SwingApplication.main(SwingApplication.java:36)
2012-07-01 19:58:11,318 [main] ERROR griffon.swing.SwingApplication - Unrecoverable error
griffon.exceptions.MVCGroupConfigurationException: Unknown MVC type 'jump'. Known types are []
at org.codehaus.griffon.runtime.core.AbstractMVCGroupManager.findConfiguration(AbstractMVCGroupManager.java:73)
at org.codehaus.griffon.runtime.core.AbstractMVCGroupManager.createMVCGroup(AbstractMVCGroupManager.java:186)
at org.codehaus.griffon.runtime.core.AbstractGriffonApplication.createMVCGroup(AbstractGriffonApplication.java:474)
at org.codehaus.griffon.runtime.core.AbstractGriffonApplication.startup(AbstractGriffonApplication.java:313)
at griffon.swing.AbstractSwingGriffonApplication.realize(AbstractSwingGriffonApplication.java:78)
at griffon.swing.AbstractSwingGriffonApplication.run(AbstractSwingGriffonApplication.java:132)
at griffon.swing.SwingApplication.main(SwingApplication.java:36)
[delete] Deleting directory /Users/XXXX/Documents/workspace_griffon/jump/staging/macosx64
[delete] Deleting directory /Users/XXXX/Documents/workspace_griffon/jump/staging/macosx


一回エラーになるものの、下記の形にすればOK系)

  • presentation ・・id:kiy0taka さんが以前発表されていたgriffonプレゼンテーションのテンプレート版
    • griffon-swingのいつもの依存エラーで途中で止まる系
    • toolkit自体は app.toolkit=swing


griffon create-app slide -archetype=presentation
cd slide
griffon install-plugin http://artifacts.griffon-framework.org/repository/plugins/swing/1.0.0/griffon-swing-1.0.0.zip
cd ../
griffon create-app slide -archetype=presentation


試行ネタ)
駄目元で
app.toolkit=javafx
 =>
app.toolkit=swng
 =>
プラグインインストール
 =>
app.toolkit=javafx に戻す

あたりに書換えて processing plugin辺りを試してみようと思ったんだけど
<TLで javafxOpenGL組み合わせられない?? な話が出ていたので

  1. pluginのinstall自体はOK
  2. swing-pluginが先に再生しようとする挙動をする*4
  3. viewに定義されているのがjavafxDSLなのでDSL参照無いよー のエラーが出る

でNG。
フォルダ名等を全部書き換えればうまくいく(立ち上がるまでは行く)とは思うんだけど
どうせエラーバリバリ吐くしな。。。というので断念しました

 でも正直な処、Swingの中の一部高速化したいところをjavafxとかに出来ないと
なかなか厳しいのではと思ったりもしてしまっている。
SWT pluginとかのコンパチも出来ると嬉しいけど、実際の所どうなんだろう。。。


参照情報リンク)


追記)
GriffonFxPad/SwingPad に関しては


griffon install-plugin http://artifacts.griffon-framework.org/repository/plugins/swing/1.0.0/griffon-swing-1.0.0.zip
だけがどうも引っかかっているっぽいな

これだけ先にして


griffon run-app
で普通に実行時plugin解決をする感じ

追記2)
一応ここら辺の話って

一応発表したスライドを貼っておきます*5


Griffon10 in groovy_fx

View more presentations from
kimukou_26


*1:XP32bitだと起こらない。ただしwamanさんが指摘しているようにアプリ終了後javaプロセス落とさないと終了しない

*2:インストールがはねられる

*3:はテンプレート名の認識でOKっぽい

*4:defaultっていうのが多分swingなので名前順かな?

*5:内容薄いのは厳しめだ〜