🐬
Embulkプラグインをv0.11 & Kotlinで作る時にハマったポイント
embulk: v0.11
Java: openjdk version "1.8.0_292"
jruby: 9.4.3.0
Gradle: 8.3
Kotlin: 1.8
GitHub: https://github.com/guchey/embulk-input-ahrefs
初めてembulkのプラグインを作りました。v0.11では大きな変更が複数あるようでドキュメントが見つからずいくつかのポイントでハマったのでメモします。
以下の記事を参考にさせていただきました。
embulk new
がない
embulk v0.11には プラグイン開発の多くの記事に登場する embulk new
がありませんでした。
自分でGradleプロジェクトを作成する必要し、必要な依存を追加していく必要がありました。
build.gradleの記述は https://github.com/embulk/gradle-embulk-plugins を参考にしました。
embulk -L
がない
embulk v0.11には embulk -L ./embulk-input-ahrefs
の形式で動作確認できてたようですがそのオプションがありませんでした。
動作確認のために以下のコマンドで開発中のプラグインをインストールしました。
meven plugin編
./gradlew publishToMavenLocal
cp build/publications/maven/pom-default.xml pom.xml
mvn install
.embulk/embulk.properties
m2_repo=/path/to/your/.m2/repository
(追記)
どうやら自分の指定の仕方が悪かったようです。
gem plugin編
./gradlew gem
embulk gem install build/gems/embulk-input-ahrefs-*.gem
build.gradle.ktsはGemブロックに対応してなさそう
Kotlin DSLだと gem
/ gemPush
のブロックがエラーとなりました。
build.gradleで書くしかなさそうです。
// Enable the following "gem" and "gemPush" tasks if you want to publish your plugin also as a Ruby Gem.
// gem {
// authors = [ "..." ]
// email = [ "..." ]
// // "description" of the Ruby Gem would come from "description" of the Gradle project.
// summary = "Example input plugin for Embulk"
// homepage = "https://.../"
// licenses = [ "..." ] // See: https://guides.rubygems.org/specification-reference/#license=
//
// from("LICENSE") // If you want to include LICENSE file(s) in the Ruby Gem package.
// }
// Push it by: "./gradlew gemPush"
// gemPush {
// host = "https://rubygems.org"
// }
./gradlew gemPush
が Broken pipe
で失敗する
./gradlew gemPush
が私の環境では Broken pipe
になってしまい失敗しました。
Pushing gem to https://rubygems.org...
POST https://rubygems.org/api/v1/gems
ERROR: While executing gem ... (IOError)
Broken pipe
関連するかわかりませんがjrubyにissueがありました。
./gradlew gemPush
ではなく gem push
して回避することにしました。
./gradlew gem
cd build/gems
gem push embulk-input-ahrefs-0.1.1-java.gem
公開したプラグインをどうやって利用するか
meven plugin編
mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.2:get -Dartifact=io.github.guchey.embulk.input.ahrefs:embulk-input-ahrefs:0.1.1
.embulk/embulk.properties
m2_repo=/path/to/your/.m2/repository
gem plugin編
embulk gem install embulk-input-ahrefs
Discussion