複数のSBTプロジェクトでは、メインのWebアプリケーションはいくつかのサブプロジェクトに依存しています。 私はStubbedモデルを考えていたときに、スタブ付きモデルの実装を分割されたサブプロジェクトにしたいと思います。SBT動的プロジェクトの依存関係(コマンドライン引数に基づく)
問題:SBTプロジェクトの依存関係は、SBTで事前定義されています。私はそれをコマンドラインでサブプロジェクトの一つまたは他のものに依存して動的にすることはできません。
つまり、実際に実装されたモジュールに依存するWebアプリケーションや、同じプロジェクトツリー内のスタブされたモジュールにのみ依存するWebアプリケーションを作成するためのスタブ付きビルドを作成するための「リリースビルド」はできません。
依存関係を分離するためのアイデアは次のとおりです。スタブ・ド・ジャーを含む製品リリースの戦争を望んでいません。スタブ付きジャーは、テスト環境でのみ使用できます。
質問:コマンドライン引数を使用して、SBTに依存するサブプロジェクトを伝えることはできますか?
通常の桟橋でプロジェクトを開始するときは、まずメインプロジェクトを通常のサブプロジェクトに依存させる必要があります。 '-Stub = true'のようなコマンドラインでSBTを起動すると、メインプロジェクトがスタブブブされたサブプロジェクトへの依存関係を変更したいと思います。時間を与えるので、それはスタブされたモデルか標準的なスタブされたモデルのいずれかでなければならない。コンパイラは依存関係を更新する機会を持つべきである。 SBTでそれを行うことは可能ですか?ここで
は、サンプルプロジェクトです:
lazy val DataTier = Project(
id = "dataTier",
base = file("dataTier"))
}
lazy val StubbedDataTier = Project(
id = "stubbeddataTier",
base = file("stubbeddataTier"))
}
lazy val webApp = Project(
"tiny-web",
file("."))
.aggregate(
DataTier,
StubbedDataTier
)
.dependsOn(
if (getCmdLineArg("Stub") == "true") StubbedDataTier else DataTier
)
SBTを実行すると、私たちはモデルスタブ行うことができます。SBTがない場合
./sbt ~jetty:start -Stub = true
または通常モデルで
./sbt ~jetty:start
をこれをサポートして、このようなSBTの新機能になることは可能でしょうか?
.dependsOn(
if (getCmdLineArg("Stub") == "true") StubbedDataTier else DataTier
)