13

これまでのところ、ScalaプロジェクトをSBTで(Typesafeスタックを介して)コンパイルしてきました。sbt-assemblyを使用して、複数のマシンでコードを実行したいと思います。指示に従って、私が行った唯一の変更はproject/Build.scalaファイルにありました。関連する部分は次のとおりです。

resolvers += "Typesafe Releases" at "http://repo.typesafe.com/typesafe/releases",
resolvers += "artifactory" at "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases",
libraryDependencies += "com.eed3si9n" % "sbt-assembly" % "0.8.3"

ただし、実行するとsbt compile、次のエラーが発生します。

sbt.ResolveException: unresolved dependency: com.eed3si9n#sbt-assembly/scala_2.9.1/sbt_0.11.2;0.8.3: not found

私は何が間違っているのですか?

ありがとう!

編集(フォルダは)とbuild.sbt同じフォルダにファイルを 作成し、次の2行を含めます。Build.scala/project/

Seq[Setting[_]](resolvers += "artifactory" at "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases",
                addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.3"))

エラーは次のとおりです。

[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  ::          UNRESOLVED DEPENDENCIES         ::
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn]  :: com.eed3si9n#sbt-assembly;0.8.3: not found
[warn]  ::::::::::::::::::::::::::::::::::::::::::::::
[warn] 
[warn]  Note: Some unresolved dependencies have extra attributes.  Check that these dependencies exist with the requested attributes.
[warn]      com.eed3si9n:sbt-assembly:0.8.3 (sbtVersion=0.11.2, scalaVersion=2.9.1)
[warn] 
[error] {file:/Users/myname/current/projectname/project/}default-d7da9a/*:update: sbt.ResolveException: unresolved dependency: com.eed3si9n#sbt-assembly;0.8.3: not found

編集2 うーん、成功した後、コンソールsbt compileに入って入力できるようにする必要がありますか?sbtassembly

> assembly
[error] Not a valid command: assembly
[error] Not a valid project ID: assembly
[error] Not a valid configuration: assembly
[error] Not a valid key: assembly
[error] assembly
[error]   

編集3JKはそれを手に入れました。build.sbtGitHubREADMEで指定されている情報を追加する必要がありました。

4

1 に答える 1

10

ここには2つのポイントがあります。1 つは、SBT プラグインが単なるライブラリ依存関係ではないということです。特に、他の Scala ライブラリが Scala バージョンを使用するのと同様の方法で、現在の SBT バージョンを使用します。もう 1 つは、ビルドではなく、プロジェクトlibraryDependenciesの依存関係にproject/Build.scala影響を与えることです。

SBT フル ビルドは、それ自体が SBT プロジェクトであり、ディレクトリ ツリーの 1 レベル下にあるため、通常のビルドと同じように構成された独自のビルドを持つことができます。少数の状況下で「フル ビルド」が必要になる通常のビルドとは異なり、ビルドにフル ビルドを使用する理由はほとんどないため、ほとんどの場合、 にある.sbtファイルを使用するだけでproject/十分です。

もう 1 つの問題は、バージョン管理です。SBT には、addSbtPluginすべてを処理するというユーティリティ関数があります。これは moduleID を取り、必要なすべての SBT および Scala のバージョン管理情報を追加します。

したがって、完全なビルドで sbt-assembly を機能させるには、(通常は または のいずれか).sbtの下にファイルを作成し、ビルドのリゾルバーと依存関係をそこに配置します。project/project/build.sbtproject/plugins.sbt

resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.3")
于 2012-06-11T22:19:04.063 に答える