2013-07-25 4 views
14

Lassen Sie uns sagen, ich war auf einer clojure Bibliothek Hacking ich in meinem Projekt verwenden wurde:Kann Leiningen Bibliothekscode von lokal ausgechecktem Quellcode laden?

/User/SCDF/Code/myproject/
/User/SCDF/Code/other-Völker-Projekte/clojure- Bibliothek-geklonten-from-github

Derzeit wenn ich Änderungen in clojure-library-cloned-from-github mache ich dann lein install betreiben meine neue Version auf das lokale Repository zu schieben (ich habe mich verändert meine und ihre project.clj auf eine neuere Version -SNAPSHOT Punkt der Bibliothek, so dass es jedes Mal aktualisiert wird) und starten/starten Sie dann lein deps unter myproject.

Gibt es einen Weg, ich kann Leiningen in ../../clojure-library-cloned-from-github für den Quellcode für die Bibliothek statt mit einem Maven und Gläser suchen, so dass, wenn ich Änderungen an den Code sie zur Laufzeit gesehen werden?

Antwort

18

Überprüfen Sie Leiningens checkout dependencies Funktionalität.

Grundsätzlich erstellen Sie eine symbolische Verknüpfung zum Bibliotheksverzeichnis in einem Unterverzeichnis namens 'Checkouts' Ihres aktuellen Projekts und fügen es Ihrem Leiningen-Profil hinzu. Jetzt wird dieses Projekt auch geladen, wenn Ihr Programm von Leiningen gestartet wird (REPL, run).

Wenn Sie unter Windows sind, müssen Sie anstelle einer symbolischen Verknüpfung das NTFS-Äquivalent einer symbolischen Verknüpfung zu einem Verzeichnis erstellen, das als "junction point" bezeichnet wird.

Achten Sie darauf, dass dies nicht funktioniert, wenn Ihr Projekt nicht wirklich über Leiningen gestartet wird (zum Beispiel in Eclipse/CounterClockWise). Wenn Sie CounterClockWise ausführen, müssen Sie die gewünschte Bibliothek als Eclipse-Projekt hinzufügen und anschließend die Eclipse-Projekteigenschaften Ihres eigenen Projekts bearbeiten: Fügen Sie unter Java-Buildpfad> Projekte das Bibliotheksprojekt hinzu.

Wenn Sie jetzt von Eclipse REPL aus starten, wird die Bibliothek in den Java-Klassenpfad einbezogen. Wenn Sie möchten, dass das Projekt auch in Leiningen funktioniert, müssen Sie auch die Checkout-Funktionalität nutzen.

Natürlich, wann immer Sie einen eigenständigen Build Ihres Programms machen wollen, funktionieren die Checkouts nicht mehr, und Sie müssen die Bibliothek als normale Abhängigkeit hinzufügen oder eine gebaute Version in Ihren Uberjar aufnehmen.

+0

Side Frage, würde das Git nicht verwechseln? Auf 'nix stelle ich mir vor, dass es über weiche Links weiß und man kann ihnen sagen, ihnen nicht zu folgen, aber sind Knotenpunkte auf NTFS grundsätzlich nicht transparent? Ich nehme an, Sie fügen 'checkouts /' zu '.gitignore' hinzu. – SCdF

+0

Ja, checkouts ist eine lokale Entwicklungsfunktion. Deshalb müssen Sie die Bibliothek auch in Ihre Projektabhängigkeiten einfügen, die Checkout-Version wird dabei bevorzugt. Es ist also eine gute Idee, es in deiner Versionierung zu ignorieren. – NielsK

Verwandte Themen