Help us understand the problem. What is going on with this article?

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

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.

そのうち直ると思うので無視しましょう

https://twitter.com/dmikurube/status/1238458550600347648?s=20

4.2 Exec.getLogger

LoggerFactory.getLoggerを代わりに使うようです。
Use the "org.embulk.embulk-plugins" Gradle plugin to build

4.3 FindBugs

Gradle 6.XではFindBugsは使えないっぽいのでSpotBugsを使うのが良いように思っています。設定方法がわかる人がいたら教えてください。(調査中)

https://gist.github.com/hiroyuki-sato/6e3698cf92ff55ca881bc846e91bfd12

5 プライベートリンク

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした