Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@sonots

Embulk が利用している Java のエコシステム

More than 5 years have passed since last update.

Java エコシステムを全く追っておらず、Embulk がなにをどのように使っているのかわかっていなかったのでメモ。

Embulk で利用しているエコシステムには以下のものがある。

  • gradle
  • maven central
  • jcenter
  • rubygems

Gradle

Gradle というビルドツールを利用している。設定を groovy で書き、古き良き xml を使わないあたりがナウいようだ。

Java なプラグインを雛形から生成すると build.gradle ファイルがおかれていて、このファイルが Gradle の設定ファイルとなっている。

build.gradle には次のような設定がある。ここで Java なライブラリをどこのレポジトリからダウンロードしてくるのか設定してある。

repositories {
    mavenCentral()
    jcenter()
}

gradlew (gradle ラッパー)

Java プラグインの場合、https://github.com/sonots/embulk-filter-row/tree/master/gradle/wrapper のように gradle/wrapper なるディレクトリおよび gradlew (gradlew.bat) スクリプトが作られて git レポジトリにつっこんでおく形になる。

ラッパーを使ってGradleビルドを実行すると、Gradleが自動的にダウンロードされ、それを使ってビルドが実行されるようになるようだ。

ラッパーは、バージョン管理システムにチェックインするべきです。ラッパーと一緒にプロジェクトを配布することで、前もってGradleをインストールすることなく、誰もがすぐプロジェクトで作業できるようになります。 さらにいいことに、ラッパーを使ってもらうことで、ビルドに使用されるGradleのバージョンをプロジェクトが想定しているものに強制することができます。 もちろん、ラッパーは継続的インテグレーションサーバーで作業するときも非常に便利です。サーバーでビルドの設定を行う必要がないからです。

cf. http://gradle.monochromeroad.com/docs/userguide/gradle_wrapper.html

というわけで、./gradlew classpath のようにビルドし、./gradlew test のようにテストを実行し、./gradlew gemPush のように rubygems にプラグインをリリースすることになる。

Maven Central Repository

Maven Central Repository は Java のライブラリを公開する場所らしい。perl でいう cpan, ruby でいう rubygems。ただ、どうも使い勝手が良くないらしく、Java のライブラリを公開するレポジトリが他にもいくつか存在している群雄割拠の時代になっているようだ。後述の jcenter もその1つ。

JCenter

JCenter は bintray.com が提供している Java ライブラリを公開するレポジトリのようだ。
embulk 本体は Maven Central ではなくこちらで公開しているようだ。しかし、一般的な Java ライブラリは Maven Central にあることが多いので併用しているようだ。

Rubygems

プラグインの公開には rubygems を使っている(Java プラグインでも)。JRuby gem としてラップして、./gradlew gemPush とすることにより rubygems に公開できる。
プラグインを rubygems に公開することにしているのは、jruby プラグインでも java プラグインでも分け隔てなく公開するための場所として rubygems を選定したためだろう。

4
Help us understand the problem. What is going on with this article?
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
sonots
A Ruby, Fluentd, and Chainer Committer. SRE Engineer. Qiitaは小ネタの投稿場所として利用しています。業務コードで、なぜそういう書き方をしているのか解説をQiitaに書いて、コードにはQiitaへのリンクを張る、という使い方をしていることが多いです(自己紹介じゃない)
zozotech
70億人のファッションを技術の力で変えていく

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?