On 17 Jan 2013, at 5:32 PM, Steve Ebersole <steve(a)hibernate.org> wrote:
As discussed a little in HHH-8140[1] and on the earlier Eclipse
thread,
I'd like to look at simplifying the build a bit around making IDE setup
easier. One thing that came to mind was looking at source generation.
Today we have source generation occur for:
* Antlr
* JAXB
* JPA static metamodel gen
* Logging
The first 2 rely on specific tools while the other 2 are generated via
AnnotationProcessors.
For the first 2, there is really not much to discuss aside from possibly
to consider adding those outputs to Git. I'd actually be open to
considering that for JAXB.
Personally I would not check them in. In my world generated classes don't
belong into the repository.
But really it is the AnnotationProcessors I wanted to talk about.
Currently we apply the AnnotationProcessors in separate javac task
configurations. I cannot remember all the reasons we decided to do it
this way originally. But I know that one was wanting to be able to keep
the output of each (the generated sources) in dedicated directories[2].
This reminds me of not so distant discussion on jboss-dev ;-)
I still believe it is nice to have a different output directory for each annotation
processor and I also like the idea of keeping things separate in the build.
IMO it is completely valid to run the processors separately from the main javac call.
I know this creates problems in the IDE setup, but the limiting factor in this case
is the IDE.
But we could also just lump all the APT output into one single,
separate
directory (target/generated-src/apt/main, target/generated-src/apt/test,
e.g.). What this would gain us is the ability for the IDE to run APT as
part of normal javac. It would be one less thing to set up when setting
up the IDE project.
Since I drive the build most of the time from the command line I don't care
that the IDE is not doing the APT processing. For me a nicely organised
build outweighs simpler IDE setup.
--Hardy