我有这样的东西。我的项目定义位于X/build.sbt
, X/MyOtherDefinitionWithSpecialThing/build.sbt
, X/MySuperPublishConfig/build.sbt
.
但我对这个问题的看法是相反的。而不是指定位置./build.sbt
and ./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
在你的情况下。