BETA

sbt で hello world する

投稿日:2019-04-14
最終更新:2019-04-14

環境構築

jdk の導入

sdkman を使ってjdk をインストールする。

$ curl -s get.sdkman.io | /bin/bash  
$ source ~/.bashrc  
$ sdk version  

利用可能なJavaのバージョンを調べる。

$ sdk list java  

今回は、open-jdk-11 をインストールする。

$ sdk install java 11.0.2-open  

シェルを立ち上げなおし、 java -version を実行して以下のように表示されればOK。

openjdk version "11.0.2" 2019-01-15  
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)  
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)  

sbt の導入

sdkman を使って sbt をインストールする。

$ sdk install sbt  

sbt プロジェクトを作成する

sbt プロジェクトのディレクトリを作成し、その下に build.sbt を作成する。

$ mkdir hello-world  
$ cd hello-world  
$ touch build.sbt  

sbt コンソールを立ち上げてみる。

$ sbt  
[info] Updated file /home/hoge/hello-world/project/build.properties: set sbt.version to 1.2.8  
[info] Loading settings for project global-plugins from plugins.sbt ...  
[info] Loading global plugins from /home/hoge/.sbt/1.0/plugins  
[info] Loading project definition from /home/hoge/hello-world/project  
[info] Updating ProjectRef(uri("file:/home/hoge/hello-world/project/"), "hello-world-build")...  
[info] Done updating.  
[info] Loading settings for project hello-world from build.sbt ...  
[info] Set current project to hello-world (in build file:/home/hoge/hello-world/)  
[info] sbt server started at local:///home/hoge/.sbt/1.0/server/572225a992b90a2c4bd0/sock  
sbt:hello-world>  

最後に sbt:hello-world> と出てこれば良い。終了するには exit と入力するか、Ctrl-Dを押す。

Hello World

src/main/scala 以下にソースを置く。
sbt を実行したあとのディレクトリは以下のような感じ。

$ tree -L 3  
.  
├── build.sbt  
├── project  
│   ├── build.properties  
│   └── target  
│       ├── config-classes  
│       ├── scala-2.12  
│       └── streams  
├── src  
│   └── main  
│       └── scala  
└── target  

src/main/scala/example/ 以下に、 Hello.scala というファイルを作成する。
内容は以下になる。

package example  

object Hello {  
  def main(args: Array[String]) {  
    println("Hello World!")  
  }  
}  

やってることはたぶんscalaを知らなくてもわかると思う。

実行

まず、compileする。
sbt コマンドでsbtコンソールを立ち上げ、 compile と打つ。

sbt:hello-world> compile  
[info] Updating ...  
(略)  
[success] Total time: 3 s, completed 2019/04/14 11:43:14  

success と出たらコンパイル成功。失敗だった場合エラーになる。
例えば、先程の Hello.scalaprintlnputs にしてみる。

sbt:hello-world> compile  
[info] Compiling 1 Scala source to /home/hoge/hello-world/target/scala-2.12/classes ...  
[error] /home/hoge/hello-world/src/main/scala/example/Hello.scala:5:5: not found: value puts  
[error]     puts("Hello World!")  
[error]     ^  
[error] one error found  
[error] (Compile / compileIncremental) Compilation failed  
[error] Total time: 0 s, completed 2019/04/14 11:45:33  

puts なんでねえよ!って怒られます。

コンパイルが通ったところで、最後に実行してみる。
sbtコンソールで run と打てばいい。

sbt:hello-world> run  
[info] Packaging /home/hoge/hello-world/target/scala-2.12/hello-world_2.12-0.1.0-SNAPSHOT.jar ...  
[info] Done packaging.  
[info] Running example.Hello  
Hello World!  
[success] Total time: 0 s, completed 2019/04/14 11:49:06  

実行可能なjarファイルを作成する

実行可能jarファイルを作成するため、sbt-assembly を導入する。
GitHubに書いてある通りに導入する。

project/assembly.sbt を以下の内容で作成する。

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.14.9")  

これで導入は完了。
sbtコンソールで assembly と打つとjarファイルが作成される。

sbt:hello-world> assembly  
[info] Strategy 'discard' was applied to a file (Run the task at debug level to see details)  
[info] Packaging /home/hoge/hello-world/target/scala-2.12/hello-world-assembly-0.1.0-SNAPSHOT.jar ...  
[info] Done packaging.  
[success] Total time: 25 s, completed 2019/04/14 11:56:53  

今回の場合、生成されたjarファイルは target/scala-2.12/hello-world-assembly-0.1.0-SNAPSHOT.jar である。
試しに実行してみる。

$ java -jar target/scala-2.12/hello-world-assembly-0.1.0-SNAPSHOT.jar  
Hello World!  

(^^)

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@qrunchdxmの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!