LoginSignup
17
11

More than 5 years have passed since last update.

Scalaでshell-scriptのように書いたらすぐに動かしたい

Last updated at Posted at 2015-08-31

モチベーション

  • Scala を shell script みたいにパッと書き換えてサッと動かしたい
  • Java以外のものを環境にインストールしたくない(Javaのみインストールしている環境で気軽に実行したい)

できるのか・・・?

結論として「できます。」

下ごしらえ

必要な物が何点かありますので、それを用意します。

sbtのドキュメント では conscript を使いなされと書いてますが、
裏で知らないものがインストールされるのもちょっと気持ちが悪いので、必要な物を手で準備します。

1. sbt-launch.jar

https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.9/sbt-launch.jar 

こちらのURLからダウンロードします。

$ wget https://repo.typesafe.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.9/sbt-launch.jar

ってかんじですね。

2. scalas というスクリプトを作成

#!/bin/sh
java -Dsbt.main.class=sbt.ScriptMain -Dsbt.boot.directory=$HOME/.sbt/boot -jar `dirname $0`/sbt-launch.jar "$@"

この2つを同一のディレクトリに入れ、パスを通しましょう

配置はこんな感じ

script-dir
  ├ sbt-launch.jar
  └ scalas

で、そこにPATHを通します。通します。(環境に合わせてPATHを通します)

echo "export PATH=$PATH:/{path}/{to}/script-dir/" >> ~/.bash_profile
source ~/.bash_profile

コマンドはこんな感じで。

下ごしらえは完了!!
(これがインストールじゃないのか??という意見もあるかと思いますが、、、)

バイバイ! shell scriptッッ!!

以下の様な Scala スクリプトを作成してみましょう

hello.scala
#!/usr/bin/env scalas

/***
scalaVersion := "2.11.7"
*/

println("Hello " + args.toList.headOption.getOrElse("World"))

で、ファイルができたら実行します。

./hello.scala

sbtがコンパイルするので若干もっさりと待たされた後に

Hello World

と表示されたら出来上がりです。

17
11
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
17
11