Kann ich mit Maven archetype plugin benutzerdefinierte Objekte zum Velocity-Kontext hinzufügen?

8

Wir haben eine Reihe von Code-Generatoren, die Velocity verwenden, um Projekte zu generieren. Die Generierung kann ziemlich kompliziert sein:

  • reflection wird verwendet (um Proxies von Drittanbietern, mit denen wir interagieren müssen, zu inspizieren), bevor die Geschwindigkeit aufgerufen wird - die resultierenden Eigenschaften (ein komplexes Objektdiagramm) werden dem Geschwindigkeitskontext hinzugefügt

  • Die Projektstruktur und -dateien können je nach den ausgewählten Optionen variieren

  • Die Vorlagen machen mehr als nur Variablensubstitution (sie verwenden ein benutzerdefiniertes Objekt, das dem Geschwindigkeitskontext hinzugefügt wird, der viele abgeleitete Eigenschaften enthält, einschließlich Sammlungen anderer Objekte, die in den Vorlagen iteriert werden)

Ich würde es lieben, diese durch Maven Archetypen zu ersetzen, da sie auch Velocity verwenden, aber es Scheinbar scheinen sie nur eine einfache Variablensubstitution und eine statische Datei- / Ordnerstruktur zu haben.

  1. Gibt es eine Möglichkeit, die Bearbeitung vor dem Erstellen eines Projekts aus einem Archetyp durchzuführen, Objekte zum Geschwindigkeitskontext hinzuzufügen und die Archetypvorlagen darauf zugreifen zu lassen?

  2. Wenn ja, können die zu erstellenden Ordner und Dateien dynamisch sein? (Oder benötigen Sie für jede Variation einen eigenen Archetyp?)

  3. Oder ist es besser, ein benutzerdefiniertes Mojo zu schreiben? (im Wesentlichen den vorhandenen Generator mit einem Maven-Plugin zu umhüllen)

James Bassett 10.09.2012, 23:47
quelle

0 Antworten

Tags und Links