Frage

Ich habe seit kurzem ein Projekt, das mehrere verschiedene Projekte verwendet. Viele dieser Projekte auf sich abhängig, JAR-Dateien des anderen Projektes in einer Bibliothek enthalten verwenden, so dass Sie jederzeit ein Projekt ändern, müssen Sie dann die anderen projest wissen verwenden und sie zu aktualisieren. Ich mag diese viel einfacher machen, und dachte über all diesen Java-Code in ein Projekt in separaten Paketen zu verschmelzen. Ist es möglich, dies zu tun, und dann auch nur in einem Glas einige der Pakete bereitstellen. Ich möchte nicht nur ein Teil davon implementieren, sondern haben sassked worden, wenn dies möglich ist.

Gibt es eine bessere Art und Weise zu handhaben?

War es hilfreich?

Lösung

Ansatz 1: Verwendung Hudson

Wenn Sie eine kontinuierliche Integration Server verwenden, wie Hudson , dann können Sie Upstream / Downstream-Projekte konfigurieren (siehe Terminologie ).

  

Ein Projekt kann eine oder mehrere nachgeschaltete projcets haben. Die Downstream-Projekte sind mit der Build-Warteschlange hinzugefügt, wenn das aktuelle Projekt erfolgreich aufgebaut ist. Es ist möglich, Setup, dass es das Downstream-Projekt in die Warteschleife, auch wenn das aktuelle Projekt (ausgeschaltet ist default) instabil ist hinzufügen sollte.

Was dies bedeutet, ist, wenn jemand in einigem Code in ein Projekt überprüft, zumindest würden Sie Frühwarn, wenn es bricht andere aufbaut.

Ansatz 2: Verwendung von Maven

Wenn die Projekte nicht zu komplex sind, dann vielleicht könnten Sie ein Hauptprojekt erstellen und diese Teilprojekte Kind Module dieses Projekt machen. Um jedoch ein Projekt in eine Form, Mangeln, dass Maven mag kann ziemlich schwierig sein.

Andere Tipps

Wenn Sie Eclipse-(oder jedes anständiges IDE) Sie können nur ein Projekt machen auf einem anderen abhängig ist, und liefern diese Konfiguration Aspekt in Ihrem SVN, und gehen davon aus Kassen in Ihrem Build-Skripte.

Beachten Sie, dass, wenn ein Projekt auf eine bestimmte Version eines anderen Projekts abhängt, die JAR-Datei ein viel einfacher Weg, dies zu verwalten. Ein großer Refactoring konnte sofort bedeutet viel Arbeit in allen anderen Projekten Dinge zu reparieren, während Sie gerade das neue Glas in zu jedem Projekt nach Bedarf fallen könnte und tun dann die Migrationsarbeit.

Ich denke, es wahrscheinlich alle auf dem jeweiligen Projekt abhängig ist, aber ich glaube, ich würde alle Projekte getrennt halten. Diese Hilfe hält das ganze System lose gekoppelt. Sie können ein Tool wie Maven verwenden, um alle Abhängigkeiten zwischen den Projekten zu verwalten. Verwalten von Abhängigkeiten wie diese ist eine der wichtigsten Stärken des Maven.

Mit Ant als Build-Tool, können Sie Ihr Projekt jede mögliche Weise verpacken, die Sie wollen. Allerdings scheint aus der Verteilung Teile des Codes zu verlassen, wie es fehleranfällig sein würde; Sie könnten versehentlich notwendigen Klassen auslassen (vermutlich alle Klassen erforderlich sind).

In Bezug auf den Code in verschiedenen Projekten zu halten, ich habe eine lose Richtlinie. Halten Sie den Code, der zusammen im selben Projekt ändert und verpacken sie in ihrer eigenen JAR-Datei. Dies funktioniert am besten, wenn der Code einig in Dienstprogramm-Bibliotheken herausgebrochen werden kann, die weniger häufig ändern, als die Hauptanwendung.

Zum Beispiel könnten Sie eine Anwendung, wo Sie Web-Service-Client-Klassen von einem Web-Service WSDL generiert haben (so etwas wie die Axis-Bibliothek). Die Web-Service-Schnittstelle wird wahrscheinlich selten ändern, so dass Sie nicht den Regenerationsschritt reoccurring die ganze Zeit in der Hauptanwendung Build haben wollen. Erstellen Sie ein separates Projekt für dieses Stück, so dass Sie nur die Web-Service-Client-Klassen, wenn die WSDL-Änderungen neu erstellen müssen. Erstellen Sie ein separates Glas und verwenden Sie es in die Hauptanwendung. Dieser Stil ermöglicht auch andere Projekte, die diese Dienstprogramm-Module wiederverwendet werden.

Wenn Sie diesen Stil folgen, sollten Sie eine Versionsnummer im jar manifest platzieren, so dass Sie verfolgen, welche Anwendungen verwenden, welche Versionen des Moduls halten. Je nachdem, wie weit wollen Sie dies nehmen, können Sie auch eine Textdatei in das Glas halten, die die Änderungen Details, die für jede Revision (ähnlich wie ein Open-Source-Bibliothek) aufgetreten sind.

Es ist alles möglich (wir hatten die gleiche Situation vor einigen Jahren). Wie schwer oder leicht es sein wird, hängt von Ihrem IDE (Refactoring, Zusammenführung, ein neues Projekt zu organisieren) und bauen Sie Werkzeug (Bereitstellung). Wir verwenden IDEA als IDE und Ant als Build-Tool und es war nicht zu hart. Ein Sonntag (niemand arbeitet + begehen), 2 Personen auf einem Computer.

Ich bin nicht sicher, was Sie mit

  

"deploy nur einige der Pakete in einem Glas"

Ich glaube, Sie alle von ihnen zur Laufzeit benötigen, werden Sie nicht? Wie ich verstanden sie voneinander abhängig sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top