Frage

Wir Bündel von automatisch generierten Klassen haben die meist Stubs Axis2 sind, Skelette usw. Für einige komplizierte WSDLs erzeugt Axis2 eine TON von Java-Bohnen, Stummel usw. Und ich bin sicher, es gibt andere Fälle, auch wenn die automatische Generierung verwendet wird.

Für den Moment behandeln wir diese als andere First-Class-Mitglieder unserer Code-Basis, und sie sind in den gleichen Paketen gespeichert.

Allerdings, wenn Refactoring zu tun, Cleanups usw. wird es schwer, die Warnungen auszusondern, die aus diesen automatisch generierten Klassen kommen. Zum Beispiel, wenn ich den Code zu bereinigen, ich versuche, um Java1.5 Generika zu verwenden, ist es keine gute Art und Weise, wie viele dieser problematischen Klassen zu wissen, unsere sind vs werden automatisch generiert.

Soll ich diese automatisch generierte Teile aus in ein anderes Paket werden zu trennen? Wie ihr speichert solche Artefakte im Repository?

EDIT: Ich sehe ‚erzeugen während des Bauprozesses‘ in ganz wenigen Antworten unten. Während ich die Vorteile zu tun, dass zu sehen ist, tragen sehe ich ganz, wie ich aus einem Repository checkin wegkommen kann.

Mein Code hat Zeitabhängigkeiten auf einige dieser Klassen kompilieren und für mich, ein Build während der Entwicklung ist ein ‚ctrl-s‘ in Eclipse. Wir verwenden ant-scripts die Kompilierung, führen Tests und generieren zu erbringenden Leistungen zu erzeugen.

War es hilfreich?

Lösung

Sie können die gleichen Pakete halten, aber ein anderen Quellordner (so etwas wie generierte-src) verwenden, das ist, was wir tun. Ich bin eigentlich auf dem Zaun über die ganze Idee im Quellcode-Repository generierten Code zu speichern. Wir tun es als Service für andere Entwickler an dem Projekt, aber es macht in der Regel sinnvoll, den Quellcode als Teil des Build-Prozesses zu regenerieren. Wenn dieser generierten Code nicht ändern wird, dann ein separates Projekt mit und ein Glas zu erzeugen könnte praktischer sein.

Andere Tipps

Zusammenfassung von Best Practices:

  • Machen Sie es wiederholbar
    • Erstellen Sie generierten Code als Teil eines Build-Prozesses.
    • Sie nicht überprüfen generierten Codes in der Quellcodeverwaltung. (Sie in der Quelle überprüfen. B. WSDL)
  • Halten Sie generierten Code getrennt von verwalteten Code
    • Verwenden Sie einen anderen Quellordner für generierte Ausgabe.
    • Geben Sie eine separate .jar so dass dieser Code erzeugt eine Abhängigkeit wird.
    • Betrachten wir ein anderes IDE-Projekt (oder Maven-Modul) mit

Ich habe diese Dateien in einem eigenen Projekt. Auf diese Weise kann ich die Build-Datei hinzufügen, alle Patches ich brauche, usw. in einem einzigen Ort und schalten Sie alle Warnungen für den generierten Code aus.

Wenn Sie sie in Ihrem Source-Control-System überprüft, nicht . Machen Sie sie erhalten neu generiert durch einen Build-Schritt. Wenn sie von einer WSDL generiert erhalten, in der WSDL überprüfen, nicht der resultierende Code.

würde ich empfehlen, für den generierten Code einen völlig separaten .jar, dass Build-Schritt erzeugen zu müssen, und dann die Quelldateien zu löschen, nur um es möglichst unwahrscheinlich, dass Maintainer die automatisch generierte Quelle Hand bearbeiten versuchen.

Auf diese Weise Ihre Refactoring-Aktivitäten wird die automatisch generierte Code als wie ein Drittanbieter-Bibliothek statt Quelle sehen manipuliert werden.

Für jeden Satz von erzeugten Artefakte, erstellen Sie ein neues Projekt, das die Generation führt, dann die Artefakte bündelt in JAR und Quelle ZIP-Dateien, und sie dann von Ihrer App verweisen. Hält die Dinge schön und seperate, und betont die Tatsache, dass die erzeugten Artefakte sind nicht von den IDE zu ändern.

mit Maven und axistools-Maven-Plugin, sind die erzeugten Quellen Orte in einem anderen Quellordner in dem ‚Ziel‘ Verzeichnis. Dieses Zielverzeichnis ist, wo Maven alle Dateien und Material erzeugt, so kann es zu reinigen.
Dies ist sehr conviniened, da die erzeugten Dateien auch in einem anderen Quellordner in der IDE angezeigt wird.

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