倭マン's BLOG

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

はじめての幻獣 Griffon 研 (34) : Griffon アプリケーションをパッケージング (2) : 環境

今回は、package コマンドの実行の際に指定する「環境 (environments)」について見ていきます(一覧)。 環境には以下の3つが定義されてました:

  • development (dev) : 開発
  • test (test) : テスト
  • production (prod) : 製品

参照 URL

BuildConfig.groovy


環境の設定は以下のファイルに記述されています:

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

内容(の一部)はこんな感じ:

// 各環境の設定(デフォルトの設定を上書き)
environments {
    // development 環境の設定
    development {
        signingkey {
            params {
                sigfile = 'GRIFFON'
                keystore = "${basedir}/griffon-app/conf/keys/devKeystore"
                alias = 'development'
                storepass = 'BadStorePassword'
                keypass   = 'BadKeyPassword'
                lazy      = true // only sign when unsigned
            }
        }
    }
    // test 環境の設定
    test {
        griffon {
            jars {
                sign = false
                pack = false
            }
        }
    }
    // production 環境の設定
    production {
        signingkey {
            params {
                sigfile = 'GRIFFON'
                keystore = 'CHANGE ME'
                alias = 'CHANGE ME'
                // NOTE: for production keys it is more secure to rely on key prompting
                // no value means we will prompt //storepass = 'BadStorePassword'
                // no value means we will prompt //keypass   = 'BadKeyPassword'
                lazy = false // sign, regardless of existing signatures
            }
        }

        griffon {
            jars {
                sign = true
                pack = true
                destDir = "${basedir}/staging"
            }
            webstart {
                codebase = 'CHANGE ME'
            }
        }
    }
}

// デフォルトの設定(カスタム環境を作成する際にも使える)
griffon {
    memory {
        //max = '64m'
        //min = '2m'
        //maxPermSize = '64m'
    }
    jars {
        sign = false
        pack = false
        destDir = "${basedir}/staging"
        jarName = "${appName}.jar"
    }
    extensions {
        jarUrls = []
        jnlpUrls = []
        /*
        props {
            someProperty = 'someValue'
        }
        resources {
            linux { // windows, macosx, solaris
                jars = []
                nativelibs = []
                props {
                    someProperty = 'someValue'
                }
            }
        }
        */
    }
    webstart {
        codebase = "${new File(griffon.jars.destDir).toURI().toASCIIString()}"
        jnlp = 'application.jnlp'
    }
    applet {
        jnlp = 'applet.jnlp'
        html = 'applet.html'
    }
}

signingkey {
    params {
        def env = griffon.util.Environment.current.name
        sigfile = 'GRIFFON-' + env
        keystore = "${basedir}/griffon-app/conf/keys/${env}Keystore"
        alias = env
        // storepass = 'BadStorePassword'
        // keypass   = 'BadKeyPassword'
        lazy      = true // only sign when unsigned
    }
}

...
  • environment ノード下に development, test, production に対応する環境の設定が書かれています。
  • environment ノードと同列の griffon, signingkey ノードはデフォルトの設定です。 上記の各環境の設定で明示的に指定されていないパラメータは、こちらのノードで設定されている値が使用されます。

設定の変更


Griffon アプリケーションを署名付きでパッケージングしたい場合、environments/production ノード下の 'CHANGE ME' となっているところを変更しましょう。

例えば、$USER_HOME*1にあるキーストア .keystore*2 を使用して署名したい場合(alias は「waman」とします)、

    production {
        signingkey {
            params {
                sigfile = 'GRIFFON'
                keystore = "$userHome/.keystore"
                alias = 'waman'

                // storepass, keypass が設定されなければ、コマンド・プロンプトで入力を求められる
                storepass = '《キーストアのパスワード》'
                keypass   = '《鍵パスワード》'

                lazy = false // sign, regardless of existing signatures
            }
        }

        griffon {
            jars {
                sign = true
                pack = true
                destDir = "${basedir}/staging"
            }
            webstart {
                codebase = '《Java Web Start のコードベース》'
            }
        }
    }

のようにします。

  • BuildConfig 内(Griffon のスクリプト内)では、いくつかの定義済変数が使え、$USER_HOME に対応する変数 $userHome もあります。 Griffon Guide「4.4 Customising the build」参照。
  • キーストア等のパスワード storepass, keypass を指定していなければ、コマンド・プロンプトで入力を求められます。
  • Java Web Start のコードベース》に関しては、そのうち機会があれば。

Griffon in Action

Griffon in Action

*1:Windows の場合「C:\Documents and Settings\《ユーザー名》」

*2:keytool でキーストアを作成する際に -keystore オプションを指定しなかった場合に、キーストアが作成される位置。