倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

はじめての幻獣 Griffon 研 (35) : Griffon アプリケーションをパッケージング (3) :モードと付属ファイル

今回は Griffon アプリケーションをパッケージングする際のモードと、付属ファイルの配置を見ていきます(一覧)。

参考 URL

モード


 「モード」はパッケージングのタイプで、以下の4つがデフォルトで定義されています:

  • zip (Jar ライブラリと起動ファイル*1
  • jar (実行可能 Jar ファイル)
  • webstart
  • applet

出力されるフォルダ

「package」コマンドによって生成される Jar ファイルなどの成果物は

  • $PROJECT_HOME/dist

フォルダ下の各モードに対応するフォルダに生成されます。 例えば jar モードの場合、「$PROJECT_HOME/dist/jar」フォルダ下に Jar ファイルなどが生成されます。 この「dist」フォルダは、「griffon clean」コマンドを実行すると削除されます。

生成されるファイル

モード別、環境別に生成されるファイルを列挙するとこんな感じ:

モード\環境 dev/test prod
zip FunctionPlotter-#.zip
griffon.icns
bin
+FunctionPlotter.bat
+startApp.bat
+FunctionPlotter
+startApp
lib
+*.jar
FunctionPlotter-#.zip
griffon.icns
bin
+FunctionPlotter.bat
+startApp.bat
+FunctionPlotter
+startApp
lib
+*.jar
jar FunctionPlotter.jar
FunctionPlotter-windows.jar
FunctionPlotter-#-jar.zip
FunctionPlotter.jar
FunctionPlotter.jar.pack.gz
FunctionPlotter-#-jar.zip
webstart application.jnlp
*.png
*.jar
FunctionPlotter-#-webstart.zip
windows
application.jnlp
*.png
*.jar.pack.gz

*.jar
FunctionPlotter-#-webstart.zip
applet applet.html
applet.jnlp
*.png
*.jar
FunctionPlotter-#-applet.zip
windows
applet.html
applet.jnlp
*.png
*.jar.pack.gz

*.jar
FunctionPlotter-#-applet.zip
  • 太字のファイルは配布する際にいりそうなファイル。
  • 各欄の Zip ファイルは、同欄内のファイルを Zip したアーカイブです。 zip モード以外では必要なのか疑問。 License ファイルなどを含めるのにいるのかなぁ・・・ まぁ、設定でこの Zip ファイルを生成しないようにできますけどね。 やり方は後述。
  • prod 環境でパッケージングした場合、各 Jar ファイルに対応する .jar.pack.gz ファイルが生成されます。 これは Webstart や Applet でダウンロード時間を減らすのに使えるようです。 詳しくは「Reducing the Download Time」参照。
  • dev 環境では、webstart, applet モードで生成されたファイルを実行しようとすると、セキュリティ上、実行がストップされるようです*2。 クライアント側のセキュリティ設定を何とかすれば動くのかも知れませんが、やりかた不明。

Zip モード以外の Zip アーカイブを出力しない

zip モード以外のモードで Zip アーカイブの生成を抑制するためには、

  • $PROJECT_HOME/griffon-app/conf/BuildConfig.groovy

ファイルに以下のような設定を追加します:

griffon{
    memory{ ... }
    ...
    dist{
        jar.nozip = true
        webstart.nozip = true
        applet.nozip = true
    }
}

付属ファイル


LICENSE ファイルや README ファイルをパッケージに含めたい場合や、Jar ファイル内の META-INF フォルダ内にパッケージングしたいファイルがある場合は、それらのファイルを規定位置に配置しておくと自動にパッケージングしてくれます:

付属ファイル 配置場所
LICENSE, README など $PROJECT_HOME/griffon-app/conf/dist/shared
META-INF/* $PROJECT_HOME/griffon-app/conf/metainf

LICENSE, README ファイルは、パッケージング後には

  • $PROJECT_HOME/dist/《モード名》/LICENSE

というパスに配置されます。 zip モードの場合には、Zip アーカイブのルートにも配置されます。

Griffon in Action

Griffon in Action

*1:Windows の場合は .bat ファイル。

*2:Griffon の以前のバージョンでは「griffon run-webstart」もセキュリティ上実行できなかった気がしますが、0.9.2-beta-3 では実行できました。 「griffon run-applet」はまだ無理。