sbt

giter8 & sbt new

最近はactivator newを使っている人が多いんだと思いますが、5年くらい前?はgiter8というツールが使われていました。 giter8は一時期Typesafe Stackにも含まれるほどだったんですが、なぜか見捨てられてしまいます。 その後皆さんご存知の通りactivator new…

Slick のコードを生成する sbt プラグインを作りました

Slick コードを生成のイブラリがあり、公式のほうにいくつか使い方のサンプルがありますが、毎回コピペするのもなあと思って sbt プラグインにしました。今のところ Slick 2.1.0 に依存しています。Slick 3.0.0 が出たらそれ用のバージョンも出そうと思いま…

個人/社内 Maven Repository を作る

オープンソースの Scala ライブラリは sonatype を経由して Maven Central にデプロイするのが定番となっています。Maven Central のアカウントを持っていない、とかクローズドにしておきたい、などの理由から自前で Maven リポジトリを持ちたくなることがあ…

build.sbt の変更を検知する sbt プラグインを作りました

git でブランチを切り替えたらうまくビルドできなくなって困ったけど、build.sbt が変わっているのに sbt の reload をするのを忘れていただけだった、ということがたまに起こります。これを防ぐために、.sbt や project/.scala が変更されていたら警告を表…

sbt のプロンプトに git のブランチ名を表示させる

sbt は簡単にプロンプトが変えられることはご存知でしょうか。 build.sbt で shellPrompt を定義するだけです。 shellPrompt の型は SettingKey[State => String] なので := の右側には State => String という型の関数を定義します。 state ってなにって感…

sbt 0.12.x から導入された binary version について

Play 2.1-RC1 を使おうとしたらいろいろハマったのでまとめました。 scala 2.9系, sbt 0.11系 までの依存管理 scala の異なるバージョンのScala用にビルドされたライブラリは使えないことがあります。 例えば、Scala2.8と2.9ではバイナリ互換性がないので、2…

忙しい人のための sbt プロジェクト作成講座

$ g8 typesafehub/scala-sbt 以上です。 最低限の設定項目を聞いてくれます。 $ g8 typesafehub/scala-sbt Scala Project Using sbt organization [org.example]: com.github.tototoshi name [Scala Project]: mou-yada- scala_version [2.9.2]: version [0.…

Scala で g8 や conscript みたいなコマンドを作る

Scala でちょっとしたコマンドラインツールを作る場合 scalaコマンドで実行 sbt run assemblyしてjava -jar xsbt-start-script-plugin とかが考えられるけれど、 sbt-launch.jar をランチャにする という方法もあります。一番シェルコマンドっぽく使えるんじ…

sbt の multi-project 構成で xsbt-start-script-plugin を使う。

sbtでmulti-projectしたときstart-scriptどうしたらいいんだろう。sbt 'project foo' 'run' 相当のことをやりたい。 と思ったのですが、やってみたらすんなりできてしまいました。 // project/plugins.sbt resolvers += Classpaths.typesafeResolver addSbtP…

はじめての sbt-plugin

sbtでコマンドを定義する - tototoshiの日記にてコマンドの定義の仕方を書きました。 今度はこれの延長で sbt-plugin を作ってみます。 sbt-plugin にすることで再利用しやすくなりますね。 作るもの hello コマンドを追加する sbt-hello-plugin を作ります…

sbtでコマンドを定義する

sbtでは独自にコマンドをできます。使用するのは Command.command, Command.single, Command.args です。 引数なしのコマンドを定義する Command.command を使います。 val command: Command = Command.command("name")(action) 1つ目の引数がコマンド名、 2…

.sbtrcでaliasを設定できることを教えてもらった

@xuwei_k の誕生日を祝う会 兼 Scalaハッカソン - PARTAKEに参加しました。 その懇親会で教えてもらった豆知識。 sbt0.10以降? ~/.sbtrc に alias c=compileと書くと c で compile できる! ちなみに alias c='compile'とかだとだめでした。

sbt の Build.scala を書く

sbt は 0.10 系から? build.sbt での設定と Build.scala での設定の両方が使えるようになりました。*1 使い分け方 基本的に build.sbt も Build.scala もできることに変わりはありません。 ただし build.sbt は記述が簡単な一方で制限があります。平たく言…