I'm wondering if there's a fundamental reason why we couldn't change maven to build a dependency graph of files with scripts attached to the arcs, just like make used to do. Statements and scripts would need a way to expose the lists of source files and target files to the maven core to build the dependency graph, but that doesn't seem like an insurmountable problem. The reactor would become a way to stitch dependency graphs together, saying that when one project runs the jar:install script to bring $MAVEN_REPO/group/jar/foo-1.0.jar up-to-date, this is the same artifact that another project has declared in its project.xml. But the result would be the ability to work out the minimum set of scripts that need to be run across a large reactor build purely by checking timestamps on files and without going through the process of running every step in the process.
I think there is no such fundametal reason. Maven is just following Ant
design in this regard, but I don't see why all of the current functionality could't be provided within the framework you are describing. The piece missing from the picture above are 'phony targets', make targets that don't correspond to a physical file.
Maven would provide many such targets, in fact all of the 'goals'
that the plugins have exactly this nature. In essence Maven (and Ant)
can be though of like make that supports phony targets only.
Once Maven is able to build dependency graph that includes not only 'goals' but also source files, intermediate build products and final artifacts, a further optimisation available would be using special timestamp files corresponding to phony targets. It makes sense only if at least one phony target depends on a real physical source file of course.
This is definetely a very interesting idea. I hope we can work on implementing this after 1.0 is out.
R.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]