繁体   English   中英

让sbt-assembly工作

[英]Getting sbt-assembly working

到目前为止,我一直在用SBT编译我的Scala项目(通过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.scala (文件夹是/project/ )的同一文件夹中创建了一个build.sbt文件,并在其中包含以下两行:

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 ,我应该能够进入sbt控制台并输入assembly吗?

> 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]   

编辑3 JK得到了它。 必须添加GitHub自述文件中指定的build.sbt信息。

这里有两点。 一个是SBT插件不仅仅是库依赖 - 特别是,它们使用当前的SBT版本,类似于其他Scala库使用Scala版本。 另一种是, libraryDependenciesproject/Build.scala影响依赖的项目 ,而不是构建

SBT完整版本本身就是一个SBT项目,只位于目录树的一个级别,因此可以像普通版本一样配置自己的构建。 与普通构建不同,在少数情况下需要“完全构建”,因此几乎没有理由使用完整构建来构建,因此使用位于project/ .sbt文件几乎总是足够的。

另一个问题是版本控制。 SBT有一个名为addSbtPlugin的实用程序函数,可以为您处理所有事情。 它需要一个moduleID并添加所有必需的SBT和Scala版本信息。

因此,要使sbt-assembly在完整版本中工作,可以在project/ (通常是project/build.sbtproject/plugins.sbt )下创建一个.sbt文件,并将构建的解析器和依赖项放在那里:

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

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.3")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM