LoginSignup
3
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-07-21

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 を選定したためだろう。

3
3
0

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
3
3