我有这样的东西。我在X/build.sbt
, X/MyOtherDefinitionWithSpecialThing/build.sbt
,有项目定义X/MySuperPublishConfig/build.sbt
。
但我对这个问题的看法是相反的。而不是指定位置,./build.sbt
我./project/Build.scala
指定资源路径的位置。结果是一样的。看起来像:
sourceDirectory <<= (baseDirectory) (_ / ".." / "src")
target <<= (baseDirectory) (_ / ".." / "target")
这允许创建具有多个定义的单个项目。这适用于嵌套/分层项目。但我对分层项目使用符号链接(Linux 操作系统)。
我的一个 SBT 插件有一个文件树。多个构建定义,只有一个src/...
.
|-build.sbt
|-project
|---project
|-----target
|-------...
|---target
|-----...
|-project-0.11
|---build.sbt
|---project
|-----project
|-------target
|---------...
|-----target
|-------...
|-project-0.12
|---build.sbt
|---project
|-----project
|-------target
|---------...
|-----target
|-------...
|-...
|-src
|---main
|-----scala
|-------org
|---------...
|---sbt-test
|-----...
|-target
|---...
如果这不能解决您的问题,请详细说明您不想使用“cd”命令的原因;-)
-- 对于更新的用例:
我使用 shell 包装器,并且在每个 SBT 项目中都有指向这个的符号链接:
#!/bin/sh
#
here=$(cd $(dirname "$0"); pwd)
if [ ! -e "${here}/build.sbt" ]
then
echo build.sbt lost
exit
fi
cd ${here}
LOCAL_BUILD=true sbt-0.12 "$@"
我只是写/path/to/my/project/sbt 'show name'
例如或/path/to/my/project/sbt run-main
在你的情况下。