ページ

2016年6月15日水曜日

Googleの新しいビルドツールBazelを試してみる


Bazelとは?
Google自信が使っていたビルドツールを公開したものです。
Android、iOSなどでも使えるとのこと。現在はベータ版。
余談
なぜBazelを試そうかと思ったかというと、、
最近やってるTensorflowでBazelが使われていたからです、、はい。

環境準備 & インストール


2016年6月現在サポートされているプラットフォームは
  • Ubuntu Linux
  • Mac OS X
です。
あとJDK8以降が必要とのこと。
今回はVagrantでUbuntuの環境を用意してそこで試してみたいと思います。
UbuntuのバージョンがTrusty (14.04 LTS)であれば以下コマンドで
JDK8をインストールします。
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java8-installer
ちなみに途中でsudo apt-get updateを実行しないと、
E: Unable to locate package oracle-java8-installer
のエラーが出るのでお忘れなく^^;
Ubuntuのバージョンが'Wily (15.10)'の場合は以下コマンドでインストール。
$ sudo apt-get install openjdk-8-jdk
正常にインストールできたか確認
$ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
良さそうです^^
あとは一気にBazelのインストールを行います。
$ echo "deb http://storage.googleapis.com/bazel-apt stable jdk1.8" | sudo tee /etc/apt/sources.list.d/bazel.list
$ curl https://storage.googleapis.com/bazel-apt/doc/apt-key.pub.gpg | sudo apt-key add -
$ sudo apt-get update && sudo apt-get install bazel
$ sudo apt-get upgrade bazel
インストール確認
$ bazel version
Extracting Bazel installation...
Build label: 0.3.0
Build target: bazel-out/local-fastbuild/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Fri Jun 10 11:38:23 2016 (1465558703)
Build timestamp: 1465558703
Build timestamp as int: 1465558703

簡単なJavaプロジェクト作成


試しに簡単なJavaのプロジェクトを作成し、ビルドしてみます。
  • ディレクトリ構成
.
├── BUILD
├── WORKSPACE
└── src
    └── main
        └── java
            └── com
                └── slowhand
                    └── Sample.java
Bazelではworkspace毎の場所で作業します。
workspaceにはルート直下にWORKSPACEファイルが必要になります。
WORKSPACEはライブラリの外部参照を記述したりしますが、
今回は依存は無いので空のファイルを作成します。
  • Sample.java
単純にHello bazelと表示するだけのクラスです。
package com.slowhand;

public class Sample {
  public static void main(String args[]) {
    System.out.println("Hello bazel");
  }
}
  • BUILD
BUILDファイルにはソースコードの配置や参照ライブラリなど記述します。
java_binary(
  name = "sample",
  srcs = glob(["**/*.java"]),
  main_class = "com.slowhand.Sample",
)

ビルド&実行


それではビルドしてみます。
$ bazel build //:sample
INFO: Found 1 target...
Target //:sample up-to-date:
  bazel-bin/sample.jar
  bazel-bin/sample
INFO: Elapsed time: 10.765s, Critical Path: 7.52s
ビルドが成功するとbazel-binの配下に実行モジュールが作成されます。
$ bazel-bin/sample
Hello bazel
ちゃんと実行されてます^^
ちなみに、、WORKSPACEファイルがないと以下のエラーになります。
The 'build' command is only supported from within a workspace.

0 件のコメント:

コメントを投稿