2020年3月現在、Embulkプロジェクトは最初のリリースから5年が経過し、バージョン1.0に向けての作業がすすんでいます。
マイルストーンについての情報はEmbulk v0.10 series, which is a milestone to v1.0を参考にすると良いでしょう。
この中で、プラグイン開発者はgradle-embulk-pluginsの利用が推奨されています。
この文書は、自分のプラグインでgradle-embulk-plugins
を使った際に調べたことやハマったことを記載します。
1 gradle-embulk-pluginsとは
そのうち
2 既存のプラグインのバージョンアップ方法
わざわざ書かなくても、手順はREADMEに書いてあります。
- gradle5で廃止になる構文を書き換える
- gradleのバージョンをあげる
- gradle-embulk-pluginsを利用するようにbuild.gradleを書き換える
- Dependency lockingの設定ファイルを作成する
2.1 gradle5で廃止になる構文を書き換える(<<
->doLast
)
以下のような警告がでる場合は、gradleのバージョンをあげる前に書き換えをおこないます。(gradleのバージョンが2.Xあたりを使っている人用)
> Configure project :
The Task.leftShift(Closure) method has been deprecated and
is scheduled to be removed in Gradle 5.0.
Please use Task.doLast(Action) instead.
diff --git a/build.gradle b/build.gradle
index c623a65..b835019 100644
--- a/build.gradle
+++ b/build.gradle
@@ -77,9 +77,11 @@ task gemPush(type: JRubyExec, dependsOn: ["gem"]) {
script "pkg/${project.name}-${project.version}.gem"
}
-task "package"(dependsOn: ["gemspec", "classpath"]) << {
- println "> Build succeeded."
- println "> You can run embulk with '-L ${file(".").absolutePath}' argument."
+task "package"(dependsOn: ["gemspec", "classpath"]) {
+ doLast {
+ println "> Build succeeded."
+ println "> You can run embulk with '-L ${file(".").absolutePath}' argument."
+ }
}
task gemspec {
2.2 gradleのバージョンをあげる
プラグイン内で./gradlew wrapper --gradle-version x.y.z
を実行します。
x.y.z
はアップデートしたい、gradleのバージョン番号です。
./gradlew wrapper --gradle-version 6.2.2
2.3 gradle-embulk-pluginsを利用するようにbuild.gradleを書き換える
How to migrate old-style build.gradle of your Embulk pluginsに書いてあるとおりに作業をします。
2.4 Dependency locking用のファイルを作成する
./gradlew dependencies --write-locks
を実行して、gradle/dependency-locks/embulkPluginRuntime.lockfile
を作成します。
このファイルは以下のようにプラグインで利用するライブラリの依存情報が記載されています。
プラグイン内で利用するライブラリのバージョンが上がったら、再度コマンドを実行して情報を更新します。
# This is a Gradle generated file for dependency locking.
# Manual edits can break the build and are not advised.
# This file is expected to be part of source control.
com.jayway.jsonpath:json-path:2.4.0
net.minidev:accessors-smart:1.2
net.minidev:json-smart:2.3
org.ow2.asm:asm:5.0.4
4. その他
4.1 Gradleの警告(compileOnly)
The compileOnly configuration has been deprecated for resolution. This will fail with an error in Gradle 7.0.
そのうち直ると思うので無視しましょう
4.2 Exec.getLogger
LoggerFactory.getLogger
を代わりに使うようです。
Use the "org.embulk.embulk-plugins" Gradle plugin to build
4.3 FindBugs
Gradle 6.XではFindBugsは使えないっぽいのでSpotBugsを使うのが良いように思っています。設定方法がわかる人がいたら教えてください。(調査中)