sbt

scalafmtやscalafix適用結果をGitHubのpull reqで自動でsuggestする

一言でいうとreviewdogの紹介をするだけなのですが、すごくタイミングよく罠にハマった?ので、それの暫定的な回避も書いておきます。

sbtのprojectでpull requestで変更された依存ライブラリの一覧を出す

少し前に、以下のようなものを作りましたが xuwei-k.hatenablog.com github.com それと似たような発想で 「このpull reqで変わったライブラリは何か?」 のdiffを出す仕組みを作りました、という話。 ここでのポイントは 「間接的に依存してるjarも含むdiff…

sbtで特定のprojectを含めた依存project全体に対してtask実行する

昔似たような違うものを使ったことがありますが、違うものです

scala3profileというsbt/compiler pluginをリリースした

github.com

CIで増減した警告を教えてくれるsbt pluginを作りたい話

モチベーションなど 自分が知る限り、sbt使ったbuildで、CIで増えた(あるいは減った)警告を出してくれる簡単な仕組みは存在しない もし知っていたら、作る必要なくなるので教えてください reviewdogは使ってる https://github.com/reviewdog/reviewdog revie…

sbtの独自Configurationを使ったbuild速度の改善

突然ですが、皆さんsbtのchrome trace吐き出す機能使ってますか?大抵の人は使ってないというか、存在すら知らないと思います。 https://github.com/sbt/sbt/pull/4576 以前以下のあたりでも多少話を出しました https://xuwei-k.hatenablog.com/entry/2022/0…

Scala 3のinlineによるcompile時間増大に対処する方法

概要や結論を先に書いておくと、適切にプロファイルを取って、適切にボトルネック箇所を見つけて対処しましょう。 という話になるのですが、大まかな概要というか、結果的に使った方法を書くと sbtのTask毎の時間を記録する機能を使う Scala 3 compilerのロ…

sbtでtaskAllという独自コマンドを作った

sbt

仕事でsbtのsub projectが100個以上あるので、こういう指定だけでもダルいので

sbt 1.4以降でgraphviz使ったsvgなどのdependency graphの出力

sbt

sbt 1.4から標準にdependency graphが取り込まれた https://github.com/sbt/sbt/pull/5883 https://github.com/sbt/sbt/pull/5880 標準で(拡張子的にはhtmlだが)svgで出力するやつがある https://github.com/sbt/sbt/blob/7969a155b0978a925d3bd4aeefcb2ace1…

packageとdirectoryに整合性がなかったら強制的にファイル移動するscalafixのrule作った

以前、チェックする君だけ作ったのですが、それを雑に改造して、強制移動する君に改良しました。 細かい部分が雑なので、読みにくいし、バグってる可能性もありますが、ご自由にお使いください。 既知の問題として、packageが2行にわかれて書かれていると、…

sbt-sonatypeでsonatypeProfileNameとorganizationに異なる値を設定するパターン

というのが実質あり得ないかと思っていたのだけれど、どういうときにそうなるか?というのに気がついたのでメモ。

sbtのremote cacheのidにcommitの日付を入れる

sbt

という小ネタ。 sbt 1.4.1時点のデフォルトでは、単にgitのcommitのhashのみだが、日付が入っていたほうが、例えばローカルのキャッシュを手動で削除したりする際などに便利そうなので。 https://github.com/sbt/sbt/blob/4a2aaabb9b41a9e016e/main/src/main…

sbt 1.4のremote cacheを試してbug報告やpull reqした記録

だいぶ色々やっているので、とりあえず雑にまとめておく

sbt 1.4からのpipeline機能を試したら3割compile時間短縮された

3割というのは、もちろんprojectの構成だったり、計測方法やその他色々によるわけですが、とにかく自分が計測した場合には3割短縮されました。114秒が80秒になりました。

sbt 1.3.0以降 % Test でライブラリ追加してもcompileの依存が変わる場合がある件

以下再現コード

Scalaのcompiler pluginをCrossVersion.fullにするかCrossVersion.binaryにするか

昨日のwartremoverのやつの続き、というか、Scalaのcompiler pluginに関する別の話。 いきなり雑に説明に入りますが

CircleCIにおけるsbtプロジェクトの依存ライブラリの最適なキャッシュ方法の考察

CircleCIにおけるキャッシュの仕組みというか仕様は、他のCIサービスと比べると、少し変わった特徴がある気がします。 といっても、自分は他にはTravisCIくらいしか詳しくないので、実はCircleCIのように色々工夫している方がむしろ最近は主流な可能性もあり…

sbtにおけるテストの並列実行の設定詳細解説

いきなり本題というか、一番言いたいことを書くと、まず テストの fork の設定によってぜんぜん違う。 という点があまり知られていない気がします。 *1 というか、自分も今回調べるまで、微妙に古い知識のままで完璧に知らなかったので、今一度理解した現時…

CircleCI上でsbtのインクリメンタルコンパイラのキャッシュが効かなくて再コンパイルされる問題

結論としては以下のissueに大体全部書いてあります。 Incremental compilation inside docker container broken since SBT 1.1.0 · Issue #4168 · sbt/sbt · GitHub 依存ライブラリのjarのキャッシュではなく、あくまでインクリメンタルコンパイラのキャッシ…

sbtで依存しているprojectのみにcleanなどの特定のタスクを実行する

以下のような質問を某所で受けたので 書きました gist.github.com 既にあるとか、もっといい感じに書ける、みたいなのがあればお知らせください。 ちなみに、デフォルトでは単体のprojectしかcleanしないのは、完全にsbt的には意図した挙動のはずです。 デフ…

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

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

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

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

maven centralやsonatypeやbintrayでTLS 1.1のサポートが打ち切られたことによるそれぞれのJavaのversionへの影響

最初sbtにissueたてるか、などとtwitterで言っていたけれど、そんなに困っている人多くなさそうだし、blogにだけまとめておけばいいか、という気持ちになったので、ひとまずまとめておく。

sbtからflatbuffersのjavaを使う

flatbuffers自体の説明はあまりしません。ググったり公式ページ見てください。 https://google.github.io/flatbuffers/

ScalaPBで使える protocol buffers の linter の plugin を作った

github.com 最初に作ったのは結構前なのですが、OSSにしてなかったのでOSSにしました。 sbtでの設定方法はgithubのREADMEなどを見てください。 protocol buffersには多少の慣習というかstyle guideが公式にあり、

ScalaコンパイラやsbtとJava 9の対応表

Java 9が広まってきて、しかし多少古いScalaやsbtのままやろうとしてハマっている人を見かけることが多くなってきたので、簡単にまとめておきます。

sbt 0.13.13でtestOnly時のテストクラス名のtab補完が効かないデグレのワークアラウンド

sbt

以下をプロジェクトのbuild.sbtか グローバルなやつ (例 $HOME/.sbt/0.13/build.sbt )に書いておく inConfig(Test){ definedTestNames <<= { import sbinary.DefaultProtocol.StringFormat import Cache.seqFormat (definedTests map (_.map(_.name).distinc…

Scala2.12とsbtのインクリメンタルコンパイルとコンパイル速度

標題の件について簡単に実験をして、それにともなう(コンパイル速度改善可能性の)予想をたてたので、それを書いていく。

sbt-protobufでsrc/test/protobufみたいなのをサポートしたい

以前書いたとおり、sbt-protobufというsbt pluginのコミッターになったので、地味にメンテしてるわけですが

sbt-protobufというsbtのpluginのコミッターになってリリース権限もらった

https://github.com/sbt/sbt-protobuf 経緯の解説をする