Dans plusieurs projets SBT, l'application Web principale dépend de certains sous-projets. Quand je pensais au modèle Stubbed, je voudrais que l'implémentation du modèle stubbed devienne un sous-projet séparé.Dépendance de projet dynamique SBT basée sur l'argument de ligne de commande
Problème: La dépendance du projet SBT est prédéfinie dans SBT. Je ne peux pas le rendre dynamique dépendait de l'un ou l'autre des sous-projets par ligne de commande. Cela signifie que je ne peux pas avoir de "release build" pour que l'application web dépende uniquement d'un module implémenté réel, ou d'une "build stubbed" pour que l'application web dépende uniquement du module stubbed dans le même arbre de projets . L'idée de séparer les dépendances est la suivante: Je ne veux pas que le produit war release inclue le pot stubbed. Le pot stubbed ne doit être disponible que dans l'environnement de test. Question: Puis-je utiliser les arguments de ligne de commande pour indiquer à SBT quel sous-projet dépend?
Lors du démarrage du projet à la jetée normale: commencez, le projet principal doit être dépendant du sous-projet régulier. Si je démarre le SBT avec une ligne de commande comme '-Stub = true', alors je voudrais que le projet principal change la dépendance au sous-projet stubbed. Comme il faut donner un temps, il devrait être soit dans le modèle stubbed soit dans le modèle stubbed normal, le compilateur devrait avoir une chance de mettre à jour les dépendances. Est-il possible de le faire en SBT?
Voici un exemple de projet:
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
)
Exécuté SBT, nous pouvons faire le modèle bouchonné:
./sbt ~jetty:start -Stub = true
ou dans le modèle régulier
./sbt ~jetty:start
Si SBT ne le soutenir, est-il possible de devenir une nouvelle fonctionnalité pour SBT comme ça?
.dependsOn(
if (getCmdLineArg("Stub") == "true") StubbedDataTier else DataTier
)