2016-03-30 8 views
0

Checkout dependencies kann verwendet werden, um während der Entwicklung ein weiteres Work-in-Progress-Projekt zu Ihrem Leiningen-Projekt hinzuzufügen (zum Beispiel: Sie entwickeln parallel eine App und eine zugrunde liegende Bibliothek).Kann Leiningen die Abhängigkeiten seiner Checkout-Abhängigkeiten rekursiv herunterladen?

Wenn jedoch eine Kassenabwicklungsabhängigkeit selbst eine "traditionelle" Abhängigkeit (von Clojars) aufweist, wird lein run im übergeordneten Projekt eine java.io.FileNotFoundException auslösen, da die "traditionellen" Abhängigkeiten der Checkout-Abhängigkeiten offenbar nicht abgerufen werden.

Gibt es eine Möglichkeit, ein Leiningen-Projekt die Abhängigkeiten seiner Checkout-Abhängigkeiten rekursiv herunterzuladen?

+0

Ein Work-Around wäre, die Liste der Abhängigkeiten von der 'provement.cli' aus der Checkout-Abhängigkeit in die des übergeordneten Projekts zu kopieren, aber dies ist nicht DRY und neigt dazu, nicht mehr synchron zu sein, wenn sich Abhängigkeiten ändern. – VincentDM

+0

Im IRC wurde mir gesagt, dass Sie Ihre Bibliothek als eine Abhängigkeit im übergeordneten Projekt hinzufügen müssen. Dies scheint jedoch nicht optimal zu sein, da die veröffentlichte Version möglicherweise andere Abhängigkeiten als die lokale Version aufweist. – VincentDM

Antwort

2

Meine Meinung über die "richtige" Möglichkeit, dies zu tun ist, Ihr Projekt von der Bibliothek in Ihrem Checkout-Verzeichnis als eine traditionelle Abhängigkeit zusätzlich zu haben in Ihrem Checkouts-Verzeichnis hängen.

Dann jedes Mal, wenn Sie Abhängigkeiten ändern, starten Sie in Ihrem Bibliotheksprojekt. Dies wird dazu führen, dass die entsprechende JAR-Datei generiert und in Ihrem lokalen maven Repo installiert wird. Es spielt keine Rolle, ob dieses Bibliotheksprojekt abgeschlossen ist, da Sie es nicht in diesem Zustand ausführen, sondern es nur zum Abrufen von Abhängigkeiten verwenden.

Dann, wenn es funktioniert, müssen Sie nichts tun, um "zur Produktion wechseln" anders als Ihre Checkout-Verzeichnis entfernen. Die Abhängigkeit ist im abhängigen Projekt bereits vorhanden.

Es gibt einen Nebeneffekt der Verwendung von Checkouts zur Bearbeitung von Bibliotheken, bei denen der Code zweimal geladen wird. Einmal von der Version "abhängig" und dann wieder von der "Checkout-Version". Dies ist sehr oft ein Problem für mich, wenn ich Protokolle benutze und daran denken muss, die Protokolldefinition neu zu laden.