Scala に最適なビルド ツールはどれですか? それぞれの長所と短所は何ですか?プロジェクトで使用するものを決定するにはどうすればよいですか?
2 に答える
Maven は CI サーバーとうまく統合されるため、Maven を使用して職場で Scala プロジェクトを構築しています。もちろん、シェル スクリプトを実行してビルドを開始することもできますが、Maven から CI に入れたい他の情報がたくさん出てきます。それが、Maven を Scala プロジェクトに使用する唯一の理由だと思います。
それ以外の場合は、SBT を使用してください。同じ依存関係にアクセスできます(maven、IMHOの本当に最高の部分)。また、巨大なインクリメンタル コンパイルも利用できます。プロジェクト内でシェルを起動する機能も優れています。
ScalaMock は SBT でのみ動作するため、おそらく Java モック ライブラリではなく SBT を使用したいと思うでしょう。その上、ビルド ファイルに完全な scala コードを記述できるため、SBT を拡張する方がはるかに簡単です。したがって、Mojo を記述するすべての厳密な役割を実行する必要はありません。
つまり、CI サーバーへの緊密な統合が本当に必要でない限り、SBT を使用してください。
この質問は、多くの意見を生み出すだけの危険にさらされています。要件の明確なリスト、または環境の説明、以前の知識などを用意することをお勧めします。
FWIW、この scala メーリング リスト スレッドにはさらに多くの意見があります。
私の2cは次のとおりです。特定の要件がない場合はsbtを使用してください
- 単純なプロジェクトの場合は、まったく簡単です (依存関係がなければ、ビルド ファイルも必要ありません)。
- これは、Scala オープン ソース プロジェクト全体で一般的に使用されています。他の人のプロジェクトをのぞき見することで、構成について簡単に学ぶことができます。さらに、多くのプロジェクトでは、sbt を使用することを前提としており、プロジェクトに依存関係として追加するための既製のコピーと貼り付けの手順が提供されています。
- IntelliJ IDEA を使用すると、完全に統合できます。IDEA で sbtを使用してプロジェクトを継続的にコンパイルすることも、逆に sbt を使用してIDEA プロジェクトをすばやく生成することもできます。最後のバージョンは、マイナー バージョンからマイナー バージョンにバンプされた他の独自のライブラリに依存する「スナップショット」サイクルにある場合に非常に役立ちます。プロジェクトを閉じて、ビルド ファイルのバージョンを更新し、
gen-idea
タスクを開き、プロジェクトを再度開きます: 更新が完了しました。 - 必要なほとんどのタスク (
compile
、test
、run
、doc
、publish-local
)が用意されconsole
てconsole
います。これは最高の機能の 1 つです。 - 一部の人々は、依存関係を GitHub から直接取得したソース リポジトリにすることができるという機能を強調しています。私はこれを使用していないので、ここではコメントできません。
依存関係の管理に Ivy を使用しているため sbt を嫌う人もいれば (長所と短所についてコメントすることはできませんが、ほとんどの場合、それは問題ではありません)、ビルド ファイルをXML の代わりに Scala DSL。sbt のフォーマットが v0.7 から v0.10 に変更されたことにがっかりした人もいますが、ゼロから始めれば移行の影響はないことは明らかです。