11 Stimmen

Verwendung mehrerer Projekte in Eclipse mit dem Play-Framework 2.1.x

Ich habe ein bestehendes Projekt in Eclipse (nennen wir es "NotPlayProj"), das noch viel Java-Code in der Entwicklung hat. Ich habe ein neues Eclipse-Projekt mit Play 2.1.0 erstellt (nennen wir es "PlayProj"). Mein Ziel ist es, den Code von NotPlayProj in PlayProj zu verwenden und sicherzustellen, dass sowohl Eclipse als auch der Play-Compiler Änderungen in beiden Projekten bemerken.

Wenn ich in den Eigenschaften von PlayProj gehe und NotPlayProj über den Projekttab hinzufüge, funktioniert die Methodenvervollständigung und -einschließung innerhalb von Eclipse, aber der Play-Compiler erkennt das Ergebnis nicht. Ich habe mir Play-Module angesehen, aber die scheinen nicht das zu tun, was ich möchte.

Gibt es einen Weg, dies zu tun, idealerweise ohne NotPlayProj zu modifizieren?

Bearbeiten --- Ich habe mir http://www.playframework.com/documentation/2.0/SBTDependencies angesehen, das zeigt, wie man ein Jar von NotPlayProj in das PlayProj/lib-Verzeichnis exportiert, aber dies erfordert einen manuellen Export für jede Änderung von NotPlayProject. Ich vermute, dass der Abschnitt Managed Dependency dies abdecken soll, aber ich habe SBT noch nie benutzt und deshalb wahrscheinlich etwas Grundlegendes übersehen.

2voto

javing Punkte 11899

Was Sie brauchen, ist kontinuierliche Integration.

Werfen Sie einen Blick auf Jenkins: http://jenkins-ci.org/ Sie sollten einen Continuous Integration-Server einrichten und die Builds anpassen, die Sie benötigen.

Beispiel: Sie haben Ihr PlayProj auf einem Server laufen, es muss in der Lage sein, einige der neuesten Klassen aus dem anderen Projekt namens NoPlayProj zu verwenden.

Ein Neuaufbau ist ein Muss, Dinge wie Null-Ausfallzeit sind schwer zu erreichen (Zumindest glaube ich nicht, dass dies ist, was Sie auch verlangen). Die Schritte, die Sie mit Jenkins automatisieren müssen, sind:

1 - Bauen und bereitstellen der neuesten Version von NoPlayProj, die sich in einem Repository befindet

2 - Bauen und bereitstellen der neuesten Version von PlayProj, die sich in einem Repository befindet und auch Ihr letzter Commit enthält, in dem Sie die Abhängigkeit aktualisiert haben, die mit NoPlayProj existiert

In Jenkins können nicht sehr komplexe Build- und Bereitstellungsanweisungen konfiguriert werden. Das sollte Sie etwas schneller machen. Ein weiterer Vorschlag wäre, beide Projekte, wenn möglich, zu mavenisieren, dies wird Ihnen helfen, die Abhängigkeiten einfacher zu verwalten.

Nur um eine Sache zu klären, Sie haben gesagt: Mein Ziel ist es, Code von NotPlayProj in PlayProj zu verwenden und sowohl Eclipse als auch den Play-Compiler Änderungen in einem Projekt bemerken zu lassen.

Nun, die Reihenfolge, in der Sie die Builds ausführen, hängt davon ab, was Sie tun möchten, solange Sie die Abhängigkeit aktualisieren, bevor Sie den Code übernehmen.

Zum Abschluss, wenn Sie nicht bereitstellen möchten, müssen Sie dies nicht tun. Sie können die Jenkins-Jobs so konfigurieren, dass Sie nur bauen. Mit Jenkins können Sie viele Dinge tun, Sie könnten auch eigene Hilfsskripte ausführen, die Ihnen zusätzliche Funktionalität bieten können.

Ich hoffe, das war hilfreich.

1voto

Anton Punkte 5575

Um Eclipse Änderungen in NotPlayProj sehen zu lassen, wenn Sie mit PlayProj arbeiten, genügt es, die Konfiguration von PlayProj zu ändern. Eigenschaften-> Java Build-Pfad -> Projekte -> Fügen Sie NotPlayProj als Abhängigkeit hinzu.

Es gibt keinen direkten Weg, den Play-Compiler mit Abhängigkeiten umgehen zu lassen, bis Sie es als Jar verpacken. Überlegen Sie die Konfiguration einer einfachen Ant-Aufgabe (Externe Tools-Konfiguration -> Ant-Build), die Ihre Jar-Datei kopiert. Die Aufgabe kann durch Drücken der Taste oder Schaltfläche ausgelöst werden.

Bei verwalteten Abhängigkeiten müssen Sie jedes Mal, wenn Sie eine Änderung in NotPlayProj vornehmen, es manuell neu erstellen. Lassen Sie Ivy/Maven die Abhängigkeit in Ihrem lokalen Repository platzieren. Danach wird Play den neuesten Schnappschuss aus Ihrem lokalen Repository verwenden.

Beide Ansätze erfordern einige Anstrengungen. Vielleicht können Sie sich Python-Skripte ansehen, die Play ausführen. Möglicherweise reicht es aus, den Klassenpfad beim Ausführen von Play start mit NotPlayProj zu erweitern.

0voto

Friso Punkte 995

Auch wenn ich das Play Framework noch nie benutzt habe, würde ich denken, dass es ein Format gibt, das sowohl das Play Framework als auch Eclipse verstehen und das ist Maven. Schau dir http://www.playframework.com/modules/maven-head/home an.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X