On 04/05/2009, at 1:47 PM, Jason van Zyl wrote:
- the model builder should stand-alone to build fully inherited/
interpolated models
- the project builder should bring in any runtime information in the
form of properties, and really should be a very thin layer over the
model builder
+1
- the lifecycle executor should calculate the build plan, and by
this point every bit of configuration for each mojo should be
calculated
- the plugin manager does nothing except build up the class loader
and execute the mojo with the already built up and fully validated
configurations (i still don't like the expression evaluator which
mixes composition and configuration but i'm still thinking about
that one). you should not execute 4 of N plugins in your build plan
and then find out a required parameter is missing. Every last bit
needs to be know and made available to external tooling so that we
could have real POM validation in m2eclipse and provide real help to
correct the problems. only knowing while the plugins is executing is
not good enough.
Agree in spirit, though likewise still thinking through the
implications, such as:
- the split between plugin config using default-value / expression vs
config supplied in the POM
- non ${project.} expressions
- values that might change during execution and need to be set "just
in time"
I think this was also some of the stuff John bumped up against where
interpolating too early with the 2.1.0 work.
Even if it's not entirely backwards compatible, it might be worth
starting to enforce complete separate of the configuration phase from
the execution phase - so anything that needs to be used during
execution would need to be done in the execute() method itself rather
than via an expression.
Something else that would help here is the ability for a mojo to
describe it's outputs in some way (the classic case of adding a
generated source directory) so that modifications could actually be
computed as part of the build plan.
Cheers,
Brett
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]