sbt

sbtのscripted testを書いてpull req送りつけるおじさんだよー(sbt-lock編)

こんにちは、なぜか足を捻挫して、ゴールデンウィーク9連休なのにほぼ家に引きこもってるマンです。足はこんな状態です(グロ注意) http://f.hatena.ne.jp/xuwei/20140501181556さて、そんなことはどうでもよくで、sbt-lockというsbt pluginのテストを書いた…

sbtでサブプロジェクト毎にクロスビルドするScalaのversionが異なる場合のバッドノウハウ

タイトル長くなりすぎるからやめましたが、本当に話したいこと、話すことは、 「サブプロジェクト毎にクロスビルドするScalaのversionが異なる場合」 だけではなく 「さらにその中にsbt pluginがあってscripted testもしたい場合」 です・・・つらい・・・。…

sbtでunidocを自動でsonatypeにpublishする

sbt

まずsbt-unidoc https://github.com/sbt/sbt-unidoc というsbt pluginの簡単な説明。(以下の説明は、現時点で最新の0.3.0という前提です) sbtでサブモジュールを分けた場合、標準ではそれぞれ個別のScaladocしか作れない sbt-unidocは、すべてのモジュールを…

sbtのバグを見つけたと思ったら、結局Scalaのバグだったという話

https://gist.github.com/xuwei-k/10002590 https://github.com/sbt/sbt/issues/1237

sbtで一つ下の階層のシェルに入るコマンド

sbt

よく忘れるので書いておく reload plugins 戻り方 reload return https://github.com/sbt/sbt/blob/0.13.1/src/sphinx/Extending/Plugins.rst#1c-automatically-managed-command-line-approach

sbt-sonatypeとsbt-release pluginを組み合わせて使うサンプル

sbt

追記 sbt-sonatype0.2.1から、sonatypeReleaseAllがInputKeyではなくTaskKeyになったらしいので、sonatypeReleaseAllを使う場合は「わざわざTaskKeyを作ってInputTaskからTaskKeyに変換」というのはいらなくなったよ! 追記おわり versionは sbt-sonatype 0.…

Scala、sbt、playframeworkのversion切り替えツールの使いどころ

さて、以下の様なものがありますがScalaのversion切り替えツール https://github.com/yuroyoro/svmsbtのversion切り替えツール https://github.com/paulp/sbt-extrasplayframeworkのversion切り替えツール https://github.com/kaiinkinen/pvmそもそも、なぜ…

sbt-web pluginとplayframework2.3

rpscalaで「typesafehubのアカウントで色々web関連のplugin作ってるけどなんだろう?次期play2.3に向けての何かかな?」とか言いましたが、やはり大体予想通りだったようです。 PlayのMLでアナウンスがありましたhttps://github.com/typesafehub/sbt-web htt…

sbtのpreviousマクロ

最新のsbtに面白い機能が入っていたのを見つけたので紹介。このコミットhttps://github.com/sbt/sbt/commit/c669606999193ab06dec825733fbd68a3afe4d3b#diff-6c1b7251b13f9eae3a2fd7bd6d1481fcR146

sbt0.13.2-M1の新しいインクリメンタルコンパイル試したら素晴らしい結果がでた

140文字 ✕ 2で表すとこんな感じ sbt 0.13.1[info] Compiling 1 Scala source[info] Compiling 7[info] Compiling 84[info] Compiling 240[success] Total time: 259 s2014-01-10 12:56:08 via web sbt 0.13.2-M1[info] Compiling 1 Scala source[success] To…

sbtのコミッターになった

github時代にコミッターという言い方は(以下略新年早々めでたい。

sbtの密結合な内部アーキテクチャ

sbt

sbtというと、独特なSettingのシステム*1や、Scalaで記述する内部DSL*2ばかりが注目されがちです。それらは、初心者にわかりづらかったりして批判されることが多かったり、逆にsbtを使い慣れた人にとってはとても強力で面白い仕組みです。Settingのシステム…

sbtのscripted testとsbt-launch.jarのversion

sbt

@mao_instantlifeさんが finatraさんをsbtで動くようにできないもんだろうか2013-11-15 17:45:17 via webと言っていたので、sbt-pom-readerを紹介しつつ、自分でも試す

sbtのメソッド名が"雪だるま"な件

☃https://github.com/sbt/sbt/blob/v0.13.0/main/settings/src/main/scala/sbt/std/InputWrapper.scala#L27Unicode Character 'SNOWMAN' (U+2603) "The user should never see this method because it is compile-time only and only used internally by the…

sbtでプロジェクトファイルが変更されたらメッセージを表示する

sbtでは、プロジェクトファイル(build.sbtとかproject/build.scalaとかproject/plugin.sbtとか)を書き換えても、プロジェクトをreloadしないと設定が反映されません。デフォルトでは、全くお知らせもエラーも出さずに、reloadするまでずっと古い設定を使い続…

sbtでtest-onlyのような「補完が効いて、なおかつ補完の候補がキャッシュされるInputTask」を自作する方法

sbt

みなさん、sbtのtest-onlyとか使ってますか? http://www.scala-sbt.org/0.12.3/docs/Detailed-Topics/Testing#test-only 簡単にtest-onlyの動作を説明すると

sbtがinvokeDynamicに対応してなくて、"Unknown constant: 18" っていわれる

sbt

java8*1 をダウンロードして、sbt0.12.3で以下のようなjavaファイルコンパイルしたら、エラーになった。*2 追記 sbt0.13系では、Scala2.10.xになったので、対応してる、はず *1: ここ から、 "8 Build b88" というversion *2:もちろんjdk8で直接javacすれば…

sbt で fork in Test := true にした場合にSetupとCleanupが無効になるのはsbtの仕様?

この前の続きPlay2.1.0や2.1.1で、Tests.SetupやTests.Cleanupを設定しても有効にならない件

Play2.1.0や2.1.1で、Tests.SetupやTests.Cleanupを設定しても有効にならない件

表題の件にハマる 同じことにハマってる人がPlayのMLにいた∩(´∀`)∩ https://groups.google.com/d/msg/play-framework/_y1zwRBjl7A/OHWNHDN19FcJ 解決してなかった、ぬか喜びだった・・・(´;ω;`)ウッ… たぶん原因は、Play2.1.0からtestをforkしたJVMで実行…

play2 twitter bootstrap less lessEntryPoints

Play Framework(Scala)にTwitter Bootstrap(LESS)を組み込むなんとなく書き方気になったので、PathFinderのfilterを使って書き換えた

sbtで複数あるmainメソッドを全部実行する方法

sbt

shapelessのexampleが失敗するらしいという話があって、それ確かめるために以前自分がScalazでやった「わざわざプロジェクト別につくって、それぞれのmainを実行するコードを生成する」という方法でexampleが正常に実行できるかを確かめる↓

squeryl2scalikejdbc の設計構想

一気に作りあげようとしたのだけれど、結構面倒な問題に遭遇したので、一旦自分の考えをメモしてみるだけのなにか。 アドバイス募集。 追記: seratch さんからコメントもらったので参照するといいよ続き書いたよ squeryl2scalikejdbc作り始めた

sbt 0.13 の機能紹介

sbt

0.13.0-M1が出たので、0.12系からの違いや新機能を、大まかにまとめ。 注意 まだMilestoneなので、finalのリリースまでに細かい部分変わるかもしれません。 まだMilestoneなので、このblog書いている時点(2013-03-20)では、普通のユーザーが本格的に実用する…

postgres の JDBC driver の最新版がmaven centralとかにない件

追記: 解決したようです。http://central.maven.org/maven2/org/postgresql/postgresql/ https://github.com/pgjdbc/pgjdbc/issues/46以下一応最初に書いたものも残しておきます。

sbt の Task で、メインの任意のメソッドを実行してその結果を取得する

だいぶニッチな需要な気がしますが、つまり メインのコードやライブラリに依存した処理なので、project/ 以下のScalaファイルに色々書くだけでは無理*1 sbtのデフォルトでは、(task経由で)mainメソッドを実行させることはできても、その結果を直接Scalaのオ…

sbtで同じライブラリの異なるversionが複数存在するのを検知する方法

sbt

sbtのversionは0.12.2です(0.12系なら同じだと思いますが) conflictWarning := ConflictWarning.strict("global")

Play2.1.0のライブラリの依存関係のgraph

数日前にtweetしたけど、一応blogにも。http://xuwei-k.github.com/play2.1-RC4-dependency-graph.html追記2.0.4もつくったよ http://xuwei-k.github.com/play2.0.4-dependency-graph.html

Play2.1.0で、異なるURLに対して同じメソッドを割り当てると、"unreachable code"というwarningが出る件

routesに

Play 2.1 のテスト中に、OutOfMemoryError などが出てテストが途中で止まる場合の対策

OutOfMemoryErrorでなくても、stacktraceにObjectOutputStreamがどうとか、java.net.SocketException: Socket closedとか、見慣れないよくわからないstacktrace出る場合もあります。かつ、テストが途中で止まっても、最終的な結果はsuccessと表示される場合…

sbt の build.scala でも Seq[ Setting[_] ] を作るときには、seq を使おう?

追記: 残念ながらsbt 0.13 以降 deprecatedです・・・ https://github.com/sbt/sbt/blob/v0.13.0/main/src/main/scala/sbt/Defaults.scala#L1541-L1542 Seqじゃなくseqという、小文字なのがポイントです。*1 *1:Seqは、Scala標準のもの