私はこのようなものを持っています。X/build.sbt
、X/MyOtherDefinitionWithSpecialThing/build.sbt
、 にプロジェクト定義がありX/MySuperPublishConfig/build.sbt
ます。
しかし、この問題に対する私の見方は反対です。./build.sbt
の場所を指定する代わりに、./project/Build.scala
リソースへのパスの場所を指定します。結果は同じです。次のようになります。
sourceDirectory <<= (baseDirectory) (_ / ".." / "src")
target <<= (baseDirectory) (_ / ".." / "target")
これにより、複数の定義を持つ単一のプロジェクトを作成できます。これは、ネストされた/階層的なプロジェクトで機能します。しかし、階層プロジェクトにはシンボリック リンク (Linux OS) を使用します。
私の SBT プラグインの 1 つのファイル ツリーがあります。複数のビルド定義と 1 つのみ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' コマンドを使用したくない理由を詳しく説明してください ;-)
-- 更新されたユース ケースの場合:
私はシェルラッパーを使用しており、すべての 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
あなたの場合に書いています。