如何构建一个使用sbt作为其构建系统的项目?

时间:2011-12-06 18:22:38

标签: scala sbt

我已经下载了一个使用sbt作为构建系统的项目,我想构建它。你会认为这就像输入“sbt”或其他内容一样简单,但不是。

我想我会为此添加一个问题,因为它可能花费几个小时来自行解决这个问题。我不是在开玩笑。

3 个答案:

答案 0 :(得分:6)

首先,您需要使用sbt-extras,因为它会自动下载并使用正确版本的sbt。试图使用错误版本的sbt(比你想要构建的项目更新或更旧所说)它不一定有效,并且可能会导致奇怪的错误。

运行它:

~/path/to/sbt-extras/sbt

等待它启动并下载所有内容。如果您需要使用经过身份验证的代理,则需要编辑脚本以指定代理的用户名和密码。

检查sbt 认为需要构建的Scala版本(在输出结束时,如果一切正常)。如果这没关系,那很好,你不需要做任何事情。如果不是,您可以使用++临时指定版本,例如:

++2.8.1

(如果你想使这个永久化,你可以编辑构建定义文件,但因为这涉及在版本控制下对文件进行更改,这可能不是你想要做的。)

现在,如果您使用的是旧版本的sbt,请不要跳过下一步!如果你这样做,你可能会遇到奇怪的错误。

update

现在您可以构建和测试您构建的内容:

test

如果您收到错误“文件名太长”,这不是特定于sbt的问题,这是一个scala问题,最常见的影响Ubuntu用户(从技术上讲,对于Unbuntu用户,它通常与使用encfs加密的主目录相关) 。如果您使用的是Scala> = 2.9,请编辑构建以使用scalac命令行选项,该选项允许您指定最大文件名长度。否则,如果您使用的是Linux,则可以通过在shell提示符中运行以下命令将构建重定向到/ dev / shm或/ tmp 背景sbt在Unix上使用CTRL + Z,因为它可能似乎停止正常工作):

rm -rf target
ln -s /dev/shm target

(您可能必须在项目/构建中执行这些命令,或者也可以。)

实际上,创建/ dev / shm或/ tmp的子目录并使用它可能更好,甚至可能更安全。

编译结果应出现在目标中。然后你可能想要运行它,如果它是你可以运行的东西:

run

如果一切正常,您可以选择在本地发布结果,以便其他sbt版本自动获取结果:

publish-local

答案 1 :(得分:6)

TL; DR:

sbt compile

如果你想运行它:

sbt run

要查看可用的其他目标:

sbt tasks

获得一些(其他)帮助,但主要针对从sbt控制台输入的命令(即,在没有参数的情况下运行sbt):

sbt help

这都假定sbt版本> = 0.10.0。要查看正在使用的sbt版本,请执行以下操作:

grep sbt.version project/build.properties

如果没有这样的文件,并且在基本目录(而不是项目目录)上有一个扩展名为“.sbt”的文件,那么它的> = 0.10.0。当然,如果grep工作,它应该告诉你版本。

答案 2 :(得分:3)

我认为我不能更好地解释Getting Started Guide可以做到的。请阅读它的前6个部分,这应该不会太长时间,以便启动和运行。