オフィシャルリポジトリに上がっているSBTを利用した例*1を参考に、以下のようにbuild.sbtに数行加えるだけです。(3.0からパッケージのscalaプレフィックスがなくなっています。それ以外は特に変更はないようです) ローカル環境のPostgreSQLのテーブル定義を生成する例です。 27行目がSBTのコマンドを設定している部分で、activator slickCodeGen でコードジェネレーションタスクを実行できるようになります。コメントアウトしてありますが、28行目がコンパイル時に組み込む設定です。 JodaTimeを使いたい等のカスタマイズ例はググれば結構出てくるので割愛。 接続先の定義はapplication.confの設定を使うこともできます。*2(slickDriverの設定で末尾の$を削除するのを忘れずに) Tuple22問題も解消されていて素晴らしいですね。 SBT
sbt-coursier.md あなたの sbt update を爆速にする sbt-coursier の紹介 この記事は Scala Advent Calendar 2016(Adventar) 10日目の記事です。 今は 12/10 の 625時です。年明けなんて無かった。いいね? さてさて、sbt の依存jarのダウンロードが遅い、というのは割とよく言われる事であります。 で、この原因の一旦に、sbtが Apache Ivy を使っている、という点があります。 現状 Ivy は依存jarをダウンロードする際、全て直列でダウンロードします。依存グラフ的に関係のないライブラリがあっても、一つが終わらない限り別のjarをダウンロードしようとはしません。 ファイルIOもネットワーク通信も多重化できるこの時代にこれはいけません。 そこで Coursier の紹介です。 Coursier は S
ライブラリ依存性 このページは、このガイドのこれまでのページ、特に .sbt ビルド定義、スコープ、と タスク・グラフ を読んでいることを前提とする。 ライブラリ依存性は二つの方法で加えることができる: lib ディレクトリに jar ファイルを入れることでできるアンマネージ依存性(unmanaged dependencies) ビルド定義に設定され、リポジトリから自動でダウンロードされるマネージ依存性(managed dependencies) アンマネージ依存性(Unmanaged Dependencies) ほとんどの人はアンマネージ依存性ではなくマネージ依存性を使う。 しかし、アンマネージの方が最初に始めるにあたってはより簡単かもしれない。 アンマネージ依存性はこんな感じのものだ: jar ファイルを lib 配下に置いておけばプロジェクトのクラスパスに追加される、以上! Scal
JavaでもGradleの名前をよく聞く昨今ですが、個人的にはGradleよりもsbtの方をよく使っているため、こちらでできてもいいよねーということで。 あ、ちょっと興味があったので調べて書いていますが、どちらかといえばネタエントリに近いかも…。まあ、慣れという点もあるので、こちらで考えたいですけどねー。 では、いってみましょう。 とりあえず、普通にbuild.sbtとJavaソースコードを作成する build.sbtを作成します。内容は、まあ普通に。依存関係には、スケープゴート的にCommons Lang3でいきましょう。 build.sbt name := "sbt-simple-java-project" version := "0.0.1-SNAPSHOT" organization := "org.littlewings" libraryDependencies ++= Seq(
こんにちは、基盤開発グループの阿川です。 基盤開発グループは、アドテクスタジオに存在する様々なプロダクトが共通して抱える課題を解決するべく動いているチームです。そこでは Finagle をベースに Scala で社内向けサービスを実装することになったのですが、せっかくのゼロから構築するシステムなので Docker を全面的に採用することにしました。これまでも限定的に Docker を使うことはあったのですが、コンテナスケジューラーまで導入して Docker を使うのは初めてのことです。 そんな流れがあり sbt で Docker イメージをビルドする方法を調査してみました。 sbt の Docker 関連プラグイン ざっくり調べてみたところ sbt の Docker 関連プラグインは以下の 2 つが代表的のようでした。 sbt-docker sbt-native-packager + Do
タイトル長ぇよ! sbtには、あまり知られてない?こういう機能があります http://yoshiori.hatenablog.com/entry/20120324/1332618170 公式サイトにも一応載ってます。*1 https://github.com/sbt/website/pull/155/files で、結論をいうと、普通にpublicなリポジトリを参照する際は、以下のように RootProject( uri("git://github.com/foo/bar.git") ) ProjectRef( uri("git://github.com/foo/bar.git"), "baz")と書きます。しかしprivateなリポジトリやgithub enterpriseだったら、認証が必要なのでgitプロトコルでは参照できませんね? その際は以下のように先頭にsshをつけ、 git
PlayFramework2.3でactivator runしたときにgulpも起動する方法です。 元ネタはPlay Framework で開発用Webサーバと同時に grunt/gulp を起動する - はこべブログ ♨ですが、こちらの記事の方法では、Playの2.3からplay.Project.playScalaSettingsが無くなったので、うまく動きませんでした。 いろいろ調べてみたら、build.sbtでimport play.PlayImport.PlayKeys.playRunHooksしたら動きました。 name := """new-ui""" version := "1.0-SNAPSHOT" lazy val root = (project in file(".")).enablePlugins(PlayScala) scalaVersion := "2.11.6"
開発環境のassetsとプロダクション環境のassetsでは含めるファイルが変わってくることがあります。sourcemapはプロダクションには不要ですし、プロダクションのassetsでは、JSやCSSはminifyすることがあります。 sbt-webでこれらが完結していればその仕組を使って管理できますが、ビルドのassetsに含めるファイルを、Webpack・gulp・MakefileなどCLIツールを使って生成している場合、activator distの前に何らかのシェルコマンドを実行する必要があります。 これを実現するためのbuild.sbtは次のようになります。 lazy val buildAssetsWithCLI = taskKey[Unit]("Build assets files using CLI tools") buildAssetsWithCLI := { "make
ChatWork 技術部の小崎です。 ScalaMatsuri 2014のLT募集に落ちてしまったので一足先にそのネタの公開です。 Scalaエンジニアの皆さんはCIをどうされていますか? 私がScalaでのCIについて調べるとscalatestやspecsでテストをするという話や、scalariformコードをフォーマットするという話ぐらいで、CIでどういった開発サイクルを回しているのか、なかなか参考になる話がありませんでした。 せめて、定番的なsbtプラグインの紹介でもあれば、開発サイクルを考える手助けになるのですが・・・。 という訳で調べました。 GitHubでStarが100以上のScalaプロジェクト、全171リポジトリ、90プラグインから10リポジトリ以上使われているsbtプラグインを紹介します。 56 repository, sbt-pgp sbt-pgp - https:/
scripted testのnewerコマンド失敗する そもそもsbt0.13.5までnewerコマンド自体がバグってた(必ず成功してしまう) https://github.com/sbt/sbt/commit/4d29302632a07fd scalikejdbcのnewerの部分、引数逆だった 引数逆に修正しても、lastModifiedの時間同じになってしまうみたいなので、sleepも追加した https://github.com/xuwei-k/scalikejdbc/commit/6c1e3b91fe5b29439023f scripted-testのnewerの件は解決 sbt0.13.6にしてwithConsolidatedResolution(true)にすると、色々失敗する https://github.com/xuwei-k/scalikejdbc/commit/c6d
sbt でわからないことがある場合、だいたい wiki をみる sbtのドキュメントはgithubのwikiからscala-sbt.orgに移りました! ソースを読む メーリングリストで質問する StackOverflowで検索 or 質問 というような選択肢になります。*1 それで、英語が微妙な自分の場合、結局ソースをみることが多いわけです。それで、今までそれなりにsbtのソースを読んでいるので、自分なりに思った sbtのソースのどこから読めばいいのか? 全体としてどういう構成になっているのか? をちょっと書いてみようかと思います。 (そろそろsbt0.12が出るはずですが)このblog書いている時点の安定版であるsbt0.11.2を基準にして書きます。まぁこれから書くようなことは、sbt0.12になってもあまり変わらないはずです。 1. まず Keys.scala 読め https:/
sbtでは独自にコマンドをできます。 使用するのは Command.command, Command.single, Command.args です。 引数なしのコマンドを定義する Command.command を使います。 val command: Command = Command.command("name")(action) 1つ目の引数がコマンド名、 2つ目の引数が action です。 具体的な処理は action に書きます。 action の型を見てみると val action: State => State = ... 何らかのアクションを実行する前の状態をとって、アクションを実行したあとの状態を返す関数って考えれば良いのでしょうか? Command.command を使って "Hello" と言うだけの hello コマンドを作ると次のようになります。 // hell
求職活動中とありますが、活動報告というよりは、技術の話題を多めでいきます。Scalaが大好きなので特にScalaの話が中心になると思います。 最近「Gaeds」というScalaのライブラリを作っているのですが、 Maven Centralリポジトリから使えるようにしたので、 その経験を元にScalaのライブラリをMaven Centralリポジトリに登録する方法を解説したいと思います。 と言っても、他にドキュメントがないというわけではなく、 むしろわかりやすいドキュメントが既にたくさんあるのですが、 ただ手順自体が結構複雑なので、 僕のほうでも情報をまとめておきたいと思います。 まず、おおまかに方法を説明すると、 ライブラリをMaven Centralリポジトリに直接登録するのではなく、 「Sonatype OSSRH (OSS Repository Hosting Service)」とい
tototoshiさんの、これ Play 2.3 がリリースされたので変更点と試し方を説明します の便乗(?)的な感じで、なぜか自分もチュートリアルを書いてみます。普通に書いたら意味ないので、少しだけ変わった方法を書いてみます。 変わった方法とは、あえてtypesafe activatorを使わない方法を書きます。また、play2.3がどうやって成り立ってるのかを説明するのも兼ねて、activatorを使わないだけでなく、なんらかのテンプレート使ったりとか自動生成とかもせずに、一つずつ手作業でやって、最低限の構成のところまでだけを説明します。 なので、実用的なのかどうかはわかりません。慣れたら、それぞれみんなtypesafe activator使うなり、独自にテンプレート的なプロジェクトを用意しておくなり、giter8使うなりした方がいいかもしれません。 あと、先に完成後の最小限のplay
OutOfMemoryErrorでなくても、stacktraceにObjectOutputStreamがどうとか、java.net.SocketException: Socket closedとか、見慣れないよくわからないstacktrace出る場合もあります。かつ、テストが途中で止まっても、最終的な結果はsuccessと表示される場合もあります。 Play2.1からテストがforkされたJVM上で行われるようになったけど、これ URL が、Play側で設定されてないから簡単にメモリ不足でテストが死ぬ。のでこれ URL と同じようなことしないといけない 2013-02-05 15:18:24 via web テスト用のサーバー起動させると簡単にメモリ不足になってこの現象に遭遇するので、必ずjavaOptions設定しておきましょう。*1 簡単に解説しておくと、Play2.1から*2最近sb
sbtのタスク sbtを起動中とする。tasksと入力すると一覧がでる。 > tasks This is a list of tasks defined for the current project. It does not list the scopes the tasks are defined in; use the 'inspect' command for that. Tasks produce values. Use the 'show' command to run the task and print the resulting value. clean Deletes files produced by the build, such as generated sources, compiled classes, and task caches. compile Com
開発メモ。 20141002追記 sbtのドキュメントのリンクを最新のものに変更しました。 また0.13.5以降のAuto Pluginの説明には対応してないので、気が向いたら追記します。 作り方 以下の公式ドキュメントがわかりやすい。 sbt Reference Manual — Plugins 必要なのは以下の2点のみ。 build.sbtにplugin用設定を書く Pluginを継承したObjectを定義する plugin用のビルド定義ファイルを用意する おそらく最低限必要なのは以下の内容。 // build.sbt sbtPlugin := true name := "sample-plugin" organization := "com.example.sample" Pluginを継承したObjectを定義する 定義方法は2種類あり、Taskを利用する方法と、Commandを利
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く