Asakusa Gradle Plugin バージョン 0.9系 の変更点

ここでは、Asakusa Gradle Plugin バージョン 0.8系 から 0.9系 の変更点について説明します。

Asakusa Gradle Pluginを利用したアプリケーションプロジェクトのマイグレーションについては、 Asakusa Gradle Plugin マイグレーションガイド も参照してください。

ディストリビューションプラグイン

Asakusa Gradle Pluginを利用する場合、これまではアプリケーションプロジェクトのビルドスクリプト build.gradlebuildscript ブロック内に利用するプラグインの定義を記述していました。

例えば Asakusa on Spark と Asakusa on M3BP を利用する場合、 以下のように各コンポーネントが提供するそれぞれのGradle Pluginを記述していました。

build.gradle
buildscript {
    repositories {
        maven { url 'http://asakusafw.s3.amazonaws.com/maven/releases' }
    }
    dependencies {
        classpath group: 'com.asakusafw.spark', name: 'asakusa-spark-gradle', version: '0.3.1'
        classpath group: 'com.asakusafw.m3bp', name: 'asakusa-m3bp-gradle', version: '0.1.2'
    }
}

0.9系以降では、それぞれのGradle Pluginを記述する代わりにディストリビューションプラグイン com.asakusafw.gradle:asakusa-distribution の利用を推奨します。

以下は、ビルドスクリプトにディストリビューションプラグインを適用する例です。

build.gradle
buildscript {
    repositories {
        maven { url 'http://asakusafw.s3.amazonaws.com/maven/releases' }
    }
    dependencies {
        classpath group: 'com.asakusafw.gradle', name: 'asakusa-distribution', version: '0.9.0'
    }
}

ディストリビューションプラグインはAsakusa Frameworkのリリース時に動作検証を行った各サブプロジェクトの組み合わせによる Gradle Pluginのバージョンを自動的に適用し、これらを単一のバージョンで利用できるようにします。 将来サブプロジェクトが追加された場合や構成が変更になった場合にも、マイグレーションの手順がシンプルになります。

例えば、ディストリビューションプラグインのバージョン 0.9.0 は以下のGradle Pluginを自動的に適用します。

  • com.asakusafw:asakusa-gradle-plugins:0.9.0
  • com.asakusafw.spark:asakusa-spark-gradle:0.4.0
  • com.asakusafw.m3bp:asakusa-m3bp-gradle:0.2.0

Attention

ディストリビューションプラグインを利用しない従来の方法でプラグインの定義を記述した場合、 プラグインの定義に互換がないバージョンの組み合わせを設定できてしまうという問題があります。 問題の一例として、それぞれのプラグインが利用するコアライブラリのバージョンが異なるため、 実行時に互換がない実行ライブラリを使用してしまう、といった可能性があります。

アプリケーションSDKライブラリ

アプリケーションプロジェクトでバッチアプリケーションの開発に必要なライブラリを利用するために、 これまではAsakusa Frameworkのライブラリをグループ化したSDKアーティファクト( SDKアーティファクト利用ガイド )を提供していました。

例えばアプリケーションのプロジェクトテンプレートの標準設定では、 ビルドスクリプトの dependencies ブロック内にSDKアーティファクトの定義を記述していました。

build.gradle
dependencies {
    compile group: 'com.asakusafw.sdk', name: 'asakusa-sdk-core', version: asakusafw.asakusafwVersion
    compile group: 'com.asakusafw.sdk', name: 'asakusa-sdk-directio', version: asakusafw.asakusafwVersion
    compile group: 'com.asakusafw.sdk', name: 'asakusa-sdk-windgate', version: asakusafw.asakusafwVersion
    testRuntime group: 'com.asakusafw.sdk', name: 'asakusa-sdk-test-emulation', version: asakusafw.asakusafwVersion
}

0.9系以降では、上の例にある標準的なアプリケーションSDKライブラリはプロジェクトの依存ライブラリに自動的に追加されるようになりました。

このため、特別な理由がない限り、上記の例に示すSDKアーティファクトの定義はビルドスクリプトから削除することを推奨します。

アプリケーションSDKライブラリに関する設定を変更する場合、ビルドスクリプトの asakusafw ブロック配下の sdk で指定します。

試験的機能として提供している Direct I/O Hive 用のSDKアーティファクト com.asakusafw.sdk:asakusa-sdk-hive を利用している場合、 標準の構成にはこのライブラリは含まれていないため、 dependencies ブロックから従来の定義を削除した上で、以下の定義を追加してください。

build.gradle
asakusafw {
    sdk.hive true
}

その他、アプリケーションプロジェクトで利用するSDKアーティファクトの定義を変更している場合は、 Asakusa Gradle Plugin リファレンス - Batch Application Plugin の「SDKプロパティ」の内容を確認して必要な設定を行ってください。

Attention

dependencies ブロック内に SDKアーティファクト利用ガイド に記載しているSDKアーティファクト以外の定義を追加している場合は、その定義はそのまま残しておく必要があります。

dependencies に定義を追加している主なケースには、演算子内で使用する任意のJavaライブラリを追加している場合や、 試験的機能 として提供しているコンパイラ拡張ライブラリを使用している場合などがあります。

Asakusa Frameworkバージョンの指定

バージョン 0.8.1 より、 ビルドスクリプト上の asakusafw.asakusafwVersion を利用したAsakusa Frameworkバージョンの指定は非推奨機能となりましたが、バージョン0.9系以降では、 この値をビルドスクリプト上で変更してもこの設定は無効になるよう変更されました。

また、これまではビルドスクリプトの asakusafwOrganizer ブロック dependencies ブロック内でAsakusa Frameworkのライブラリを指定する場合にも asakusafw.asakusafwVersion を利用していましたが、0.9系以降ではこれに代わり以下のプロパティを利用することを推奨します。

バージョンを保持するプロパティ
プロパティ名 説明
asakusafw.core.version コアライブラリのバージョン。
asakusafw.mapreduce.version Asakusa on MapReduceのバージョン。
asakusafw.spark.version Asakusa on Sparkのバージョン。
asakusafw.m3bp.version Asakusa on M3BP のバージョン。

プロパティの利用例は、 Direct I/O TSV の設定例などを参照してください。

デプロイメントアーカイブファイル名の変更

これまでは、アプリケーションプロジェクトで assemble タスクなどを実行して生成するデプロイメントアーカイブのファイル名は、標準で以下のファイル名を持っていました。

  • 標準プロファイル: asakusafw-${asakusafwVersion}.tar.gz
  • 追加プロファイル: asakusafw-${asakusafwVersion}-<profile-name>.tar.gz

0.9系以降では、標準で以下のファイル名に変更になりました。

  • 標準プロファイル: asakusafw-${project.name}.tar.gz
  • 追加プロファイル: asakusafw-${project.name}-<profile-name>.tar.gz