この記事は、Play or Scala Advent Calendar 2012 11日目の記事です。
「急にScalaのprojectツリーを作らなきゃいけない!」ってこと、よくありますよね?
僕は、そんな時このやりかたで、ささっとprojectを作っています。
この間、ジャック・バウアーに拳銃で脅されて、「国家の安全がかかってる!3分以内にScalaのプロジェクトを立ち上げろ!!」と言われた時も、何とか命拾いしました。
前提条件
必要なものは、事前に入れておく(このへんは3分クッキング的)。
java | 必要 |
Eclipse | ちなみに現時点での最新はこれ |
Scala IDE | Eclipse上でScalaプロジェクトを開発出来るようになる |
sbt | ライブラリ管理とかビルドとか実行とか |
conscript | g8が使う。git上のスクリプトを実効してくれる |
giter8 | テンプレート展開してくれる |
やってみる
ようは、giter8で、テンプレートを展開して、sbtのeclipse pluginを入れれば簡単よ。って話しです。
giter8のwikiにテンプレートが、一覧になっているので、ここから良さそうなのをチョイスします。
↓よさそうなの
- gseitz/android-sbt-project sbt project for Android
- softprops/unfiltered sbt project for Unfiltered with Jetty
- chrislewis/basic-project bootstrapped sbt project with simple configuration
- scalatra/scalatra-sbt Basic Scalatra template using SBT 0.10.x.
- mads379/lift-blank.g8 Liftweb minimalistic project
- typesafehub/scala-sbt Plain scala project template
- typesafehub/play-scala Play project template for Scala users
ここでは、chrislewis/basic-projectを使います。
$> g8 chrislewis/basic-project.g8 version [0.1.0-SNAPSHOT]: organization [com.example]: com.qtamaki name [Basic Project]: Sample Project Applied chrislewis/basic-project.g8 in sample-project
sample-projectディレクトリが出来ました。
ちなみにScalaのプロジェクトを作るだけなら、これで終わりです。1分でしたね。:p
$> cd sample-project/
sbtのeclipse pluginを入れる設定をします。
$> cat >> project/plugins.sbt addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0") ^D
ここで、gitにプロジェクトを登録しておきます。
$> git init Initialized empty Git repository in /home/tamaki-t/dev/scala/leftist-heaps/.git/ $> cat > .gitignore target project/target project/project/target .classpath .project .cache ^D $> git status # On branch master # # Initial commit # # Untracked files: # (use "git add <file>..." to include in what will be committed) # # .gitignore # build.sbt # project/ # src/ nothing added to commit but untracked files present (use "git add" to track) $> git add -A $> git commit -m "init projects"
sbtで、eclipseのプロジェクトファイルを生成します(gitにはcommitしない)。
$> sbt sbt> eclipse ^D
こっから、Eclipse
[File]->[Import]を選択。ダイアログを出す。
[Existing Projects into Workspace]を選択。
先ほど、プロジェクトを生成したディレクトリを選択する。と、[Projects]ペインにプロジェクトが表示される。
Import完了。ディレクトリ構造もいい感じで、sbtに追加したjarも設定されている(ポイント)。
テストを走らせるときは、sbt上でtestがいいかも。
> test [info] Compiling 1 Scala source to /home/tamaki-t/dev/scala/sample-project/target/scala-2.9.2/classes... [info] Compiling 1 Scala source to /home/tamaki-t/dev/scala/sample-project/target/scala-2.9.2/test-classes... [info] AppSpec [info] [info] The 'Hello world' string should [info] + contain 11 characters [info] + start with 'Hello' [info] + end with 'world' [info] [info] [info] Total for specification AppSpec [info] Finished in 409 ms [info] 3 examples, 0 failure, 0 error [info] [info] Passed: : Total 3, Failed 0, Errors 0, Passed 3, Skipped 0 [success] Total time: 15 s, completed 2012/11/30 12:31:57
sbt上で実行も出来る。
> run [info] Running com.qtamaki.sampleproject.App Hello com.qtamaki.Sample Project![success] Total time: 0 s, completed 2012/11/30 12:32:13
ここまで3分足らず(多分)。いかかでしたでしょうか?
おまけ
GitHubにpushする。
git remote add origin https://github.com/qtamaki/advent_project.git
git push -u origin master
普通にpushするだけ。簡単。