2013-02-27 15 views
7

Obecnie pracuję nad projektem, który intensywnie wykorzystuje generowanie kodu do różnych celów. Jeden generator generuje skrypty SQL z jednostek jpa. Inny generuje DTO od obiektu, inny generuje model metadania JPA2.0, inny generuje pliki xml i schematy oparte na klasach Java ... każdy generator pracuje zupełnie inaczej, wymaga innej konfiguracji.Czy istnieje generyczny generator kodu Maven?

Moje pytanie jest teraz ... jest jakiś generator generic kod Maven plugin tam z następujących cech: - Tworzy model Pojo klasy Javy (nazwy, Properties, Adnotacja, Metody ...) - Używa szablonów do definiowania danych wyjściowych, które używają modelu pojo do generowania dowolnego wyniku. - Pozwala mi określić wiele szablonów dla jednej klasy - Pozwala mi generować kod i zasoby - Pozwala mi generować klasę podstawową dla target/generowanych-źródeł i fikcyjną implementację do src/main/java, która po prostu rozszerza bazę class (Jeśli istnieje klasa dummy w src/main/java, nic się nie dzieje, jeśli nie generuje ona takiej fałszywej klasy, ten kod jest sprawdzany w SCM i umożliwia ręczne rozszerzanie wygenerowanych klas)

I Używam wtyczki Flexmojos GraniteDS do generowania kodu modelu ActionScript, ale jest to dość wyspecjalizowane do tego konkretnego celu.

Myślę, że taki generyczny generator znacznie ułatwiłby to zadanie.

+0

Uwaga boczna: jeśli jesteś zainteresowany generatorami kodu, może mógłbyś rzucić okiem na [SpringFuse] (http://www.springfuse.com/). To tylko w celach informacyjnych, ponieważ nie jest to wtyczka Maven, o którą prosiłeś, ale jest też całkiem interesująca ';)' – sp00m

+0

Cóż, jest wiele ciekawych rzeczy ... myślę o Spring Roo i innych. Ale bardziej szukam prostego narzędzia maven, które mógłbym wykorzystać wszędzie tam, gdzie potrzebuję generacji suff. –

Odpowiedz

0

Jest minuteproject, który obsługuje wiele formatów wejścia/wyjścia. Nie jest to w 100% zgodne z wymaganiami, ale filozofia jest taka sama: utworzenie pojedynczego generatora dla wszystkich rodzajów celów.

Nie sądzę, że ma jeszcze wtyczkę Mavena, ale programista jest bardzo elastyczny. Na pewno możesz utworzyć żądanie funkcji.

+0

W tej chwili mój własny projekt jest już dość daleko. Więc będę kontynuował tę ścieżkę ... ale dzięki za informację. Być może przyjrzę się temu i wykorzystam jako inspirację ;-) –

0

Jak wspomniano Lukas, Minuteproject został zaprojektowany do takich rzeczy:

  1. można dodawać w różnej formie wszelkiego rodzaju oparciu tekstowy (xml, właściwości, java, html ...) plik
  2. wygenerowany plik można odnoszą się do siebie
  3. językiem szablonowym jest prędkość
  4. Szablony mogą być stosowane w tabelach/widokach; kolumna (pole); pakiet (grupy tabel/widoków); Model; Aplikacja
  5. kod jest updatable (można dodać rozszerzenie; obszar modyfikacja), co oznacza, że ​​kod został zmodyfikowany utrzymuje się przez kolejne pokolenia
  6. jest OS i można modyfikować dowolny szablon i dodaj swoje
  7. to wiązki utworów takich jak JPA2
  8. współpracuje z konwencją, ale można zdefiniować własne konwencje, które odnoszą się do modelu
  9. to nie ogranicza się do struktury danych, może inżynierii wstecznej swoje wypowiedzi (SDD - Oświadczenie Driven Development)

Ale obecnie działa poprzez linię poleceń; plugin Maven byłoby miło poprawa

Florian

0

string-template-maven-plugin może najlepszym kandydatem dla "rodzajowe" generator kodu.Można zdefiniować plik grupy szablonów strun i udostępnić plik java do przesłania danych do szablonu. Wtyczka automatycznie skompiluje i uruchomi twój kod Java (kontroler).

+0

Właściwie to nawet nie zbliża się do functioanity, której szukam. Ale już zacząłem pracować nad nową wtyczką, której użyję. Jak tylko skończy się to na początek, otworzę go. –

0

Wypróbuj write-it-once. Generator kodu oparty na szablonach. Piszemy niestandardowy szablon przy użyciu Groovy i generujemy plik w zależności od odbić java. To najprostszy sposób na wygenerowanie dowolnego pliku. Możesz utworzyć getters/settest/toString, generując pliki AspectJ lub java, SQL na podstawie adnotacji JPA, insertów/aktualizacji opartych na podstawie i tak dalej.