sbtですべてのsub projectの特定のtaskを直列に実行するtaskを自動でつくる

要点をまとめると

  • TaskではなくCommandでやってしまうなら少し簡単だが、(stateなどの他のkeyに依存して)taskからtaskを生成するには多少コツがいる(Def.taskDynを使う)
  • なおかつ、sub projectの列挙を全自動でやりつつtaskを生成するのが多少コツがいる( Project.extractして、.structure.allProjectRefsする部分)

みたいな感じなんですが、とりあえずもう答を貼っておきます。すでに誰か作っていそうな気もするので、そしたら教えて下さい

gist.github.com

"sub projectの列挙を全自動で" は(自分にとっては)とても重要で、なぜかというと、仕事でこれ必要になったんですが、仕事のprojectはmonorepoでsbtのprojectが、このblog書いてる時点で81個あるので(今後も増える可能性あり)、明示的に列挙なんて絶対にやりたくない、という理由です。

GuiceのTypeLiteralをScalaのmacroを使って生成する

続きを読む

travis-ciでwindowsを使ってsbtでScalaプロジェクトのテストをする

2018年10月くらいからWindows使えるようになってたんですね。まだexperimentalな扱いみたいですが。

blog.travis-ci.com

続きを読む

scala-libraryはなぜ後方バイナリ互換のみならず前方バイナリ互換も維持しないといけないか

そういえば、はっきり書かれたドキュメントが思い当たらない(or 存在していたとしても、改めて日本語で書くことに意味はあるだろうと思う)、ので、書いてみることにする。

自分が知ってる理由の1つとしては、以下のようなことをすると、普通にNoClassDefFoundErrorやNoSuchMethodErrorになるからである。

続きを読む