6
votes

Comment configurer SBT pour redémarrer le processus de serveur à long terme lors du changement de code?

à l'aide de la commande ~ ~ ~ exécuter la commande SBT réexécutera une cible exécutable pour moi chaque fois qu'un fichier source change. C'est bien, mais si la cible est un processus de serveur à long terme, SBT est suspendu jusqu'à la fin de l'enfant, les modifications de la source n'ont donc aucun effet.

J'aimerais avoir un moniteur SBT et recompiler mes sources même si le code cible est en cours d'exécution et redémarre le processus sur une construction réussie. Quelqu'un a-t-il essayé de la configurer?

sbt

0 commentaires

3 Réponses :


5
votes

Ceci n'est pas possible via la fonctionnalité intégrée "~". Le problème est que la tâche "~" prérémentée doit être complète. S'il s'agit d'une application de serveur en écoute sur certains ports, vous l'avez d'abord l'arrêter.

Peut-être que vous pouvez créer votre propre tâche ou modifier la tâche exécuter pour tuer / quitter l'application en cours d'exécution (E.G. Envoi d'une chaîne de sortie magique sur le port d'écoute?). Voir ceci pour plus d'informations:

http://code.google.com/p/Simple- Build-outil / wiki / personnages


1 commentaires

Merci. Je vais laisser cela ouvert quelques jours de plus, mais cela sera probablement fait comme une action personnalisée, voire pas du tout.



1
votes

Jrebel pourrait vous aider avec la rechargement de la classe dynamique si c'est ce que vous êtes après. Licence Scala gratuit disponible ici . Informations d'utilisation sur le Site SBT .


1 commentaires

Le rechargement à la volée peut même être une solution plus rapide dans la plupart des cas, bien que peut-être pas aussi fiable. Comme Jrebel est une licence exclusive, je corripserai d'abord la route d'action personnalisée. Merci!



8
votes

(Désolé pour la réponse post-mortem)

https://github.com/spray/sbt-revolver a été créé pour résoudre ce problème. < / p>


1 commentaires

Cela devrait vraiment être la réponse approuvée!