[seam-dev] Seam gen redesign

Pete Muir pete.muir at jboss.org
Tue Apr 22 11:34:56 EDT 2008

Max and I spent some time thinking about how to improve on the seam- 
gen maintenance problem (2000 lines of ant is a bit nasty), and also  
make it easier for JBoss Tools to consume the templates etc.

Feature Comparison

Seam-gen                                      JBoss  
Tools                      Notes
------------                     -------

Ant controlled (seam-gen/build.xml) --------> Wizard  
controlled                Totally different system, probably not much  

dev/prod/staging profile -------------------> dev profile  
only                 Hard to do profiles in eclipse plugins - and not  
that important, seam-gen build system is only a starting point, and a  
projects build requirements quickly outgrow it

ftl and other templates -------------------->  
templates                        We need to make all templates ftl  
based - as otherwise inconsistent, and especially hard for multiple  
consumers when we change a template from one to the other

project dependency info --------------------> project dependency  
info          Duplication!!! This is a big pain point atm

project structure --------------------------> different project  
structure      Not really an issue

generated build.xml ------------------------> generated  
build.xml              Max, does the build.xml generator in jboss  
tools use the one from seam-gen, or build from scratch? Probably  
should use the one from seam-gen

file copy ----------------------------------> file  
copy                        In other words we overwrite rather than  
merge descriptors

icefaces support ---------------------------> Not supported

Minor action items

* Move all templates to .ftl
* Tidy up association handling

Major design changes proposed

* Move all templates and project dependency info into a JAR
   - This jar is then published (e.g. to maven), and used by both  
seam-gen and JBoss Tools
   - The dependency info is specified using a maven POM, with  
profiles used to "turn on" options like drools, jbpm etc.
   - Hibernate Tools uses a classpath like system to load templates  
so this is easy
   - Extension points as necessary to allow e.g. icefaces to plugin
   - Perhaps include a sample build.xml.ftl which can be used for  
both JBoss Tools and seam-gen
   - This remains part of the release cycle

* Migrate ant control to java control
   - Extension points as necessary to allow e.g. icefaces to plugin
   - This becomes a separate module that is released independently of  
seam as needed

* Merge support for descriptors (both JBoss Tools and Seam-gen)

* Investigate whether we can utilise maven archetypes (to describe  
meta data for projects) and consume in both JBoss Tools and seam-gen  
(already offers dependency info, perhaps merge support, descriptor  
location info)
   - N.B. seam-gen would be more than just a maven archetype, but use  
it as a meta model for the generated project

Pete Muir

More information about the seam-dev mailing list