私はScalaに飛び込み、sbtに気付きました。Java/ groovyプロジェクトのGradleには非常に満足しています。Gradleにはscalaプラグインがあります。
ScalaプロジェクトでGradleよりもsbtを好む理由は何でしょうか?
SBTとGradleの重要な違いの1つは、その依存関係管理であることに注意してください。
キャッシュが混乱する可能性はありますが、アイビーがスナップショットの解決を理解していないというのは事実ではありません。 Eugeneはこの点を別のスレッド、おそらく管理者リストで説明しました。 0.12で対処されたsbtの自動更新に問題があります。
私が知る限り、Ivyがサポートしていないのは、Mavenが行う方法でスナップショットを公開することです。私はこれを別の場所で述べたと思いますが、状況を改善したい人がいれば、Gradleチームと協力して依存関係管理コードを再利用するのが最善の努力だと思います。
ご存知のように、IvyとMavenのスナップショットの依存関係の問題は、Gradleが最終的にIvyを独自の依存関係管理コードに置き換えた理由の1つです。それは大きな仕事でしたが、多くの良さをもたらしました。
このツイート は、すべての状況が将来進化する可能性があると述べています:
マークは過去に、SBTにIvyの代わりにGradleを使用することに興味があると述べました。
(両方のツールが お互いから学ぶ )
私にとって、SBTの主な特徴は次のとおりです。
fsc
より高速)。~test
は、変更を保存するたびにプロジェクトを再コンパイルおよびテストします。欠点は次のとおりです。
sbtはScala= DSLであり、そのためにScalaはファーストクラスの市民であるため、原則としては適切なようです。
ただし、sbtはバージョン間の大きな互換性のない変更に悩まされているため、タスクに適した正常に機能するプラグインを見つけて機能させるのが難しくなります。
Sbtは解決したよりも多くの問題を引き起こしていたので、私は個人的にsbtをあきらめました。私は実際にgradleに切り替えました。
図を移動します。
私はgradleがかなり新しく、sbtが非常に新しいです。これまでのところ、sbtで本当に気に入っているのは対話型コンソールです。これにより、「inspect」などのコマンドを使用して、何が起こっているかをよりよく把握できます。 AFAIK gradleはこのatmのようなものを提供しません。