lein help trampoline
Zustände:
eine Aufgabe ausführen, ohne im Inneren Leiningen der des Projekts JVM nisten.
Berechnet den Clojure Code in den Projektprozess für die gegebene Aufgabe auszuführen und ermöglicht Leiningen eigene JVM-Prozess vor beenden es nicht startet eine subProzess von Leiningen JVM läuft.
Mit diesem Speicher zu speichern oder um stdin Probleme zu arbeiten.
Argumente: ([Task-Name & args])
So können Sie sehen, ohne trampoline
läuft die zweite JVM als Teilprozess des ersten. Deshalb kann der Erste nicht aussteigen - der Ausstieg würde den Zweiten stören.
Auf der anderen Seite, mit trampoline
die erste JVM konstruiert ein Shell-Skript, das dann von der Skript ausgeführt wird, um die zweite JVM zu spawnen. In diesem Fall ist die zweite JVM ein Kind des lein
-Skripts. How Clojure Babies are Made: Leiningen's Trampoline deckt das ziemlich detailliert ab.
Wie, warum trampoline
nicht der Standard ist, ich bin nicht ganz sicher. Beachten Sie jedoch, dass nicht jeder Befehl Projektcode ausführt, sodass die zweite JVM nicht für jeden Befehl benötigt wird.
Auch kann es Nachteile sein trampoline
zu verwenden. Nehmen wir zum Beispiel einen Blick auf die folgenden Codezeilen aus dem obigen Artikel:
# Just don't change :target-path in project.clj, mkay?
TRAMPOLINE_FILE="target/trampolines/$INPUT_CHECKSUM"
Für mich, das bedeutet, dass es Probleme geben könnte, wenn :target-path
ist Satz in project.clj
.
Namensraumtrennung? http://www.flyingmachinestudios.com/programming/lein-trampoline/ – nha
Das würde den Prozessbaum durchbrechen und verhindern, dass die Prozesse bereinigt werden, wenn etwas mit dem übergeordneten Prozess passiert, der gestartet wurde. – NielsK
Es ist völlig klar, warum 'lein' eine separate JVM startet, es gibt viele Gründe dafür. Warum sollte die ursprüngliche JVM die ganze Zeit laufen? –