Asakusa FrameworkのShafuについて。
|
Shafu(車夫)は、Asakusaアプリケーションのビルド等が行えるEclipseプラグイン。
AsakusaFWは0.5.2(正式には0.6.0)からGradleを使ってビルドできるようになったが、Shafuを使うと、そのコマンドをEclipseから実行できる。
Shafuでは以下のようなことが出来る。
ShafuはEclipseプラグインなので、通常のEclipseプラグインのインストール方法と同じ方法でインストールする。
Shafuの設定を行う方法。[2015-04-18]
ツリー | タブ | 項目 | 内容 | |
---|---|---|---|---|
Jinrikisha (人力車) | 基本 | ログ | ログレベル | |
スタックトレース | ||||
環境 | Gradleのバージョン | Shafuで使うGradleのバージョン。 (build.graldeに記述されているgradlewのバージョンは、Shafuでは使われない) |
||
ネットワークモード | ||||
Gradle User Home ディレクトリー | ||||
プロジェクト | プロジェクトプロパティー | |||
Java VM | Java Home ディレクトリー | |||
システムプロパティー | ||||
Jinrikisha (人力車)/ Asakusa Framework |
プロジェクトテンプレートカタログURL | プロジェクトを作成するときに使うテンプレートの一覧が置かれている場所。 | ||
拡張機能 | テスト時にエミュレーションモードを有効にする(AsakusaFW 0.7.2) | ここにチェックを付けておくと、(build.gradleにasakusa-sdk-test-emulationを追加しなくても、EclipseのJUnitからは)スモールジョブ実行エンジンを使ったフローのテストが実行できる。 この設定を変更したら、Eclipseの設定を作り直す必要がある。 |
||
現在の設定 | フレームワークのインストール先(ASAKUSA_HOME) | 変更不可。 | ||
Hadoopコマンドの場所 | 変更不可。 |
新しいAsakusaアプリケーション用のEclipseプロジェクトを作成する手順。
テンプレートはAsakusaFWのバージョン毎・実行基盤毎(M3BPやSpark等)に分かれて提供されている。[2021-11-03]
それらは後から変更することも出来るが、バージョン変更はかなり面倒(マイグレーションする必要がある)なので、最初に決めておきたい。
実行基盤を変える(あるいは追加する)のは簡単なので、M3BPかSparkを選んでおけばいい。
既存のAsakusaアプリケーションをEclipseにインポートする手順。[2021-11-03]
パッケージエクスプローラー上でAsakusaプロジェクトを選択して右クリックすると、コンテキストメニュー(ポップアップメニュー)に「Jinrikisha(人力車)」というメニューが出る。
(Asakusaプロジェクト配下のファイルを右クリックしてもメニューは出ない。あくまで(ツリーのトップの)Asakusaプロジェクトを選択する必要がある)
以下のような事が実行できる。[2015-04-18]
メニュー | 内容 | 同等のGradleコマンド | |
---|---|---|---|
タスク名を指定してビルド | Gradleのタスク名を入力して、任意のタスクを実行する。 | gradlew タスク名 |
|
DMDLからデータモデルクラスを作成 | DMDLをコンパイルして、データモデルクラスやインポーター・エクスポーターの雛形クラス等を生成する。build/generated-sources の下にソースファイルが作られる。(DMDL EditorXのDMDLコンパイルと同等) |
gradlew compileDMDL |
|
テストデータ・テンプレートを作成 | DMDLをコンパイルして、テストに使用するExcelファイルの雛形を生成する。build/excel の下にデータモデル毎にExcelファイルが作られる。 |
gradlew generateTestbook |
|
Asakusaバッチアプリケーションを生成 | 全バッチのコンパイルを行う。build/プロジェクト名-batchapps.jar が作られる。 |
gradlew jarBatchapp |
|
Asakusaデプロイメントアーカイブを生成 | 実行環境へリリースする為のアーカイブ(Asakusa
Framework一式(バッチアプリケーションを含む))を生成する。build/asakusafw-バージョン.tar.gz が作られる。 |
gradlew assemble |
|
Asakusa開発環境の構成 | Asakusa Frameworkのインストール | 環境変数ASAKUSA_HOMEが指す場所に、Asakusa Framework一式をインストールする。 (フローのテストの実行環境を作成する) |
gradlew installAsakusafw |
バッチアプリケーションの配備 | 環境変数ASAKUSA_HOMEが指す場所のbatchappsに、バッチアプリケーションを配備する。[2017-12-03] これにより、開発環境上でAsakusaFW 0.10.0のAsakusa CLIを使う事が出来る。 |
||
Eclipseプロジェクト情報を再構成 | build.graldeの記述を元に、Eclipseのプロジェクトの設定を作成する。 (このコマンドを実行するとXtextネイチャーの情報が消える。[2015-12-29] つまり、DMDL EditorXをインストールしてある場合、Xtextに依存している機能が使えなくなる。 →Xtextネイチャーの情報を消さないようにする方法) |
gradlew cleanEclipse eclipse |
Shafuから(内部でGradleを実行する)コマンドを実行した時のエラー。[2015-12-06]
Gradleデーモンを準備しています...: 1.12 Asakusa Framework Gradle plug-ins recommend using Gradle 2.0 or later The current Gradle version (Gradle 1.12) will not be supported in future releases FAILURE: Build failed with an exception. * Where: Build file 'D:\workspace\example\build.gradle' line: 19 * What went wrong: A problem occurred evaluating root project 'example'. > org/codehaus/groovy/runtime/typehandling/ShortTypeHandling * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. BUILD FAILED Total time: 1.592 secs -- Gradleビルドはエラーにより停止しました org.gradle.internal.exceptions.LocationAwareException: Build file 'D:\workspace\example\build.gradle' line: 19 A problem occurred evaluating root project 'example'.
build.gradleの19行目は「apply plugin: 'asakusafw-spark'
」。つまり、Asakusa
on Sparkの設定で、これ自体に問題は無い。
エラーになっているのは「org/codehaus/groovy/runtime/typehandling/ShortTypeHandling
」。
どうも、このクラスが無いということらしい。
このエラーは、Gradleのバージョンが古いと起こるらしい。
コンソールメッセージの一番上を見れば分かるとおり、1.12で実行しているが、2.2.1にすると起きなくなる。
ShafuがGradleコマンドを実行する場合、build.gradle内に書かれたGradleバージョンは使用しない。
Eclipseの設定で指定されたGradleバージョンを使用するが、デフォルトが1.12である。
したがって、この設定を変えればよい(build.gradleに書かれているGradleバージョンと同じにしておけばいいだろう)。
通常だと、OperatorクラスやFlowPartクラスを作ると(エラーが無いなら)Factoryクラスが自動生成されるのだが、それが生成されないケース。[2021-12-09]
Eclipseのエラーログを見ると、アノテーションプロセッサーでjavax.annotation.Generatedが見つからなくてエラーになっている。
(エラーログは、Eclipseのメニューバーの「Help」から「About Eclipse IDE」でダイアログを開き、「Instration
Details」ボタンを押し、「View Error Log」ボタンを押すと見られる)
!MESSAGE Exception thrown by Java annotation processor com.asakusafw.operator.method.OperatorAnnotationProcessor@21efdaf !STACK 0 java.lang.Exception: java.lang.NoClassDefFoundError: javax/annotation/Generated
!MESSAGE Exception thrown by Java annotation processor com.asakusafw.operator.flowpart.FlowPartAnnotationProcessor@7b3da091 !STACK 0 java.lang.Exception: java.lang.NoClassDefFoundError: javax/annotation/Generated
新しいバージョンのJavaではjavax.annotationが無くなった為らしい。
この場合、build.gradleにjavax.annotationを加えてやればアノテーションプロセッサーが働いてFactoryクラスが作られるようになる。
〜 dependencies { eclipseAnnotationProcessor 'javax.annotation:javax.annotation-api:1.3.2' }