web-dev-qa-db-ja.com

誰かがSBTの正しい使い方を説明できますか?

これでクローゼットから降りてきます! SBTがわかりません。そこで、私はそれを言いました、今私を助けてください。

すべての道路はローマに通じており、SBTについても同じです。SBTを開始するには、SBTSBT LauncherSBT-extrasなどがあります。は、リポジトリを含めて決定するさまざまな方法です。 「最善の」方法はありますか?

時々私は少し迷子になるので私は尋ねています。 SBTのドキュメントは非常に詳細で完全ですが、build.sbtまたはproject/build.propertiesまたはproject/Build.scalaまたはproject/plugins.sbtをいつ使用するかわからないことがわかりました。

次に、面白くなります。Scala-IDESBTがあります-これらを一緒に使用する正しい方法は何ですか?何ですか?最初に来るのは、鶏か卵ですか?

最も重要なことはおそらく、プロジェクトに含める適切なリポジトリとバージョンをどのように見つけるかですマシェットを取り出して、ハッキングを始めますか?すべてを含むプロジェクトと台所の流し台を含むプロジェクトを見つけることがよくありますが、それに気づきました-少しだけ迷っているのは私だけではありません。

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

私は1年以上、小さなプロジェクトでSBTを使用しています。私はSBTを使用し、次にSBT Extrasを使用しました(それにより、いくつかの頭痛が魔法のように消えたため)、なぜどちらか一方を使用する必要があるのか​​わかりません。私は、物事がどのように組み合わさっているか(SBTとリポジトリ)を理解していないことに少し不満を感じています。これを人間の言葉で説明できれば、次の人がこのようにやって来るのを大変な苦労から救うことができると思います。

100
Jack

最も重要なことは、おそらく、プロジェクトに含める適切なリポジトリとバージョンをどのように見つけるかです。マシェットを引き出して、ハッキングを始めますか?私はすべてのものと台所の流しを含むプロジェクトを見つけることがよくあります

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. は、次のように使用することを示しています。

_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つのフレーバー(SettingKeyTaskKeyInputKey)- 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を使用して見つけられる関係がどこにも文書化されているとは思いません。もっと良い方法があれば知りたいです。

29
huynhjl

私がsbtを使う方法は:

  1. sbt-extras を使用-シェルスクリプトを取得してプロジェクトのルートに追加するだけ
  2. Sbtを設定するためのMyProject.scalaファイルを含むprojectフォルダを作成します。私はbuild.sbtアプローチよりもこれを好みます-scalaであり、より柔軟です
  3. project/plugins.sbtファイルを作成し、IDEに適切なプラグインを追加します。 sbt-Eclipse、sbt-idea、またはensime-sbt-cmdのいずれか。Eclipse、intellij、またはensimeのプロジェクトファイルを生成できます。
  4. プロジェクトのルートでsbtを起動し、IDEのプロジェクトファイルを生成します。
  5. 利益

IDEプロジェクトファイルはsbtによって生成されるため、チェックインする必要はありませんが、そうしたい理由があるかもしれません。

このように設定された例を見ることができます here

25
Channing Walton

Typesafe Activatorを使用します。これは、プロジェクトテンプレートとシードに付属しているsbtを呼び出すための優れた方法です。 https://typesafe.com/activator

Activator new

Fetching the latest list of templates...

Browse the list of templates: http://typesafe.com/activator/templates
Choose from these featured templates or enter a template name:
 1) minimal-Java
 2) minimal-scala
 3) play-Java
 4) play-scala
(hit tab to see a list of all templates)
1
Andreas Neumann