Grails > Grails3.0.xから3.2.xへのアップグレード
更新日
2019-10-22
広告
Grails 3.0.1からGrails 3.2.13へアップグレードする方法を紹介します。
まずgrails3.2.13をダウンロードして、解凍します。 そして、環境変数GRAILS_HOMEを、3.2.13の解凍ディレクトリとします。
この状態で、これまでと同じようにGrailsアプリをビルドしようとすると、以下のエラーが発生しました。
Spring Boot plugin's support for Gradle 2.3 is deprecated. Please upgrade to Gradle 2.9 or later. Cannot resolve reloading agent JAR: Could not resolve all dependencies for configuration ':agent'.Gradleのバージョンを上げれば解決すると言われています。 gradle.propertiesというファイルの gradleWrapperVersion 変数を2.9に変更してみます。
gradleWrapperVersion=2.9これで、Gradleのキャッシュを削除し、改めてビルドを走らせてみます。
$ rm -rf ~/.gradle結果は、変わりませんでした。最初にGradle 2.3をダウンロードしちゃっています。
そこで、gradle/wrapper/gradle-wrapper.propertie を修正してみることにします。
#distributionUrl=https\://services.gradle.org/distributions/gradle-2.3-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-2.9-bin.zipこれで、Gradle 2.9 を使うようになります。
今度は別のエラーが発生しました。
Error initializing classpath: Could not find org.grails.plugins:asset-pipeline:asset-pipelineプラグインのバージョンも上がったようです。 build.gradleを以下のように修正します(2か所修正)。
//classpath 'com.bertramlabs.plugins:asset-pipeline-gradle:2.5.0' classpath "com.bertramlabs.plugins:asset-pipeline-gradle:2.14.1"
//runtime "org.grails.plugins:asset-pipeline" runtime "com.bertramlabs.plugins:asset-pipeline-grails:2.14.1"これで、エラーなくビルドできるようになりました!
Grails 3.2では、ロギングライブラリが更新されているため、ログ出力の実装の見直しが必要です。
def login() { log.info(params)例えば、これまでは上記のような感じで、HTTPリクエストのパラメータを表示できていましたが、Grails3.2だと、エラーが出ます。
No signature of method: ch.qos.logback.classic.Logger.info() is applicable for argument typesつまり、infoやwarnなどのメソッドに、オブジェクトをそのまま渡せないようになりました。 Grails3.2のドキュメントにも書いてありますが、以下のようにプレイスホルダーを使う方法に変更する必要があります。
log.info("{}", params)他には、以下のように使います。
log.info "{}", 9.2D log.debug "Key: {}, Value: {}", key, value log.error "{}", exception.message, exception
広告
お問い合わせは sweng.tips@gmail.com まで。