1. ホーム
  2. scala

[解決済み] SBTの正しい使い方を教えてください。

2023-02-08 10:07:44

質問

押し入れから出ます! 私はSBTを理解していない。ほら、言っちゃった、助けてください。

すべての道はローマに通ず、それはSBTも同じである。 SBT があり SBT , SBT Launcher , SBT-extras など、そして、リポジトリのインクルードや決定方法も様々です。 ベスト」な方法はありますか?

私は時々少し迷うので、質問しています。SBTのドキュメントは非常に徹底的で完全ですが、私は、いつ build.sbt または project/build.properties または project/Build.scala または project/plugins.sbt .

そうなると楽しくなってくるのが Scala-IDESBT - これらを併用する場合の正しい方法は? 鶏と卵はどちらが先か?

最も重要なのは、プロジェクトに含めるべき正しいリポジトリとバージョンをどのように見つけるか、ということでしょう。

私はただ鉈を引き抜き、自分の道をハッキングし始めるのでしょうか?

重要なのは、プロジェクトに含めるべき適切なリポジトリとバージョンをどのように見つけるかでしょう。

簡単な例として、今、私はまったく新しいプロジェクトを始めています。の最新機能を使いたいと思います。 SLICKScala であり、これはおそらくSBTの最新バージョンを必要とするでしょう。 開始するための正気のポイントは何ですか、そしてそれはなぜですか? どのファイルでそれを定義し、どのように見えるようにする必要がありますか? 私はこれを動作させることができることを知っていますが、すべてがどこに行くべきなのか (なぜそこに行くべきなのかはボーナスです) についての専門家の意見が本当に欲しいのです。

私はこれまで SBT を小さなプロジェクトで使い始めてから1年以上になります。私が使ったのは SBT を使っていて、次に SBT Extras (を使うようになったのですが、なぜどちらかを使わなければならないのかがよくわかりません。物事がどのように組み合わされるのか理解できず、ちょっとイライラしているところです( SBT とリポジトリ) がどのように組み合わされているかを理解していないことに少し不満を感じており、これが人間の言葉で説明されれば、この方法で来る次の人の多くの苦労を救うことができると思います。

どのように解決するのですか?

<ブロッククオート

最も重要なのは、プロジェクトに含めるべき正しいリポジトリとバージョンをどのように見つけるか、ということでしょう。ナタを取り出して、自分のやり方をハッキングし始めればよいのでしょうか? 私はしばしば、あらゆるものと台所のシンクを含むプロジェクトを見つけます。

Scalaベースの依存関係については、著者が推奨しているものに従うと思います。例えば http://code.google.com/p/scalaz/#SBT は使用することを示します。

libraryDependencies += "org.scalaz" %% "scalaz-core" % "6.0.4"

または https://github.com/typesafehub/sbteclipse/ には、追加する場所の指示があります。

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0-RC1")

Javaベースの依存関係については、私は http://mvnrepository.com/ を使って何があるか確認し、SBTタブをクリックします。例えば http://mvnrepository.com/artifact/net.sf.opencsv/opencsv/2.3 は使用することを示します。

libraryDependencies += "net.sf.opencsv" % "opencsv" % "2.3"

それから鉈を抜いて、あなたの進むべき道をハッキングし始めましょう。運が良ければ、同じ jar のいくつかに依存しているが互換性のないバージョンの jar を使用してしまうことはありません。Java のエコシステムを考えると、しばしばあらゆるものを含めてしまい、依存関係を排除したり、必要な依存関係が欠けていないことを確認したりするために、ある程度の努力が必要です。

簡単な例として、今、私は全く新しいプロジェクトを始めています。SLICKとScalaの最新機能を使いたいのですが、それにはおそらくSBTの最新版が必要でしょう。開始するための正常なポイントは何でしょうか?

私は、正気の沙汰とは、次のようなものだと思います。 sbtに対する免疫を徐々につけていくことだと思います。 .

しっかり理解すること。

  1. スコープ形式 {<build-uri>}<project-id>/config:key(for task-key)
  2. 3 種類の設定 ( SettingKey , TaskKey , InputKey の中の「タスク・キー」のセクションを読んでください。 http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def

この4つのページを常に開いておき、様々な定義や例をジャンプして調べられるようにしておくとよいでしょう。

  1. http://www.scala-sbt.org/release/docs/Getting-Started/Basic-Def
  2. http://www.scala-sbt.org/release/docs/Detailed-Topics/index
  3. http://harrah.github.com/xsbt/latest/sxr/Keys.scala.html
  4. http://harrah.github.com/xsbt/latest/sxr/Defaults.scala.html

を最大限に活用する showinspect とタブ補完 を使って、設定の実際の値、その依存関係、定義、関連する設定に精通することができます。を使用して発見される関係が、そのようなものだとは思っていません。 inspect を使用して発見できる関係は、どこにも文書化されていないと思います。もし、より良い方法があれば、私はそれについて知りたいのです。