LoginSignup
1

More than 3 years have passed since last update.

gradle-embulk-pluginsを使ったメモ(Embulkプラグイン開発者用)

Posted at

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に書いてあります。

  1. gradle5で廃止になる構文を書き換える
  2. gradleのバージョンをあげる
  3. gradle-embulk-pluginsを利用するようにbuild.gradleを書き換える
  4. 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を使うのが良いように思っています。設定方法がわかる人がいたら教えてください。(調査中)

5 プライベートリンク

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1