Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [iam-dev] Incremental builder

+1 on the general idea :-)
This was also on my to-do list, so it is great that you got it first!

Now, some notes I would like your input on...

1) EMF-Compare dependency
From my side, using EMF-Compare should be ok if we can use 0.8.0 (which requires Ganymede). Note to all people interested in 3.3 compatibility that this dependency will make it very hard to get IAM working on it, since the builder is such a core component.

2) EMF models and plug-in dependency hierarchy
I'm starting to think that we might need to change the dependency tree. Since the emf models for the pom are becoming more and more relevant, probably iam.core should depend on them. I also see the builder as a part of iam.core (specially with the extension points in place). This is specially relevant for firing project configuration on pom change (i.e. changing packaging from "jar" to "war" should enable WTP support).

3) Event Notification
I wonder why "onDependency..." is needed when "onPomChange" is available. My understanding is that editing a dependency fires both events, right?
I think that having "onPomChange" is very useful, since it can allow for things like triggering project configuration when adding specific plug-ins.

4) Release Engineering
We need to update the target platform creation scripts with the emf-compare dependency if that's not already done.

All in all, the features are great!! We'll work out the details one step at a time.

On Thu, Jan 8, 2009 at 9:03 PM, Robert Dale <robdale@xxxxxxxxx> wrote:
+1 even if this is only an interim solution!

2009/1/8 Michael Poindexter <staticsnow@xxxxxxxxx>:
> I've been looking at improving the speed of the IAM incremental builder.  It
> looks like much of the time we incur when doing a build is spent rebuilding
> classpaths.  I've got a prototype running locally that makes the following
> changes:
> 1.)  Move the builder out of JDT.  Instead, the builder lives in it's own
> plugin.  All classpath updating and maven invoking is moved out of the
> builder.  The builder plugin exposes an extension point to register
> IBuilderDelegates.  An IBuilderDelegate performs a specific task in response
> to events from the builder.  When the builder runs it diffs the POM, and
> fires events as necessary to registered builder delegates.  The current
> events
> are onParentPomChange, onParentPomReplace, onDependencyPomChange, onDependencyPomReplace, onPomChange, onPomReplace, onResourceChange, onFullBuild.
>  All of the onXXXChange methods are passed an object describing the changes
> made.  I've implemented a ResourceBuilderDelegate to handle our current
> resource processing (in the builder plugin), and a JDTBuilderDelegate (in
> the JDT plugin) to handle classpath updates.
> 2.)  The builder now caches its state on shutdown to avoid rebuilding the
> whole workspace the next startup.
> 3.)  To diff the poms I am using EMF Compare
> (http://www.eclipse.org/modeling/emft/?project=compare) operating on the POM
> model that was created for the POM editor.
> At work I have a pretty large workspace (~40 maven modules) which derive
> from a common base pom, and depend heavily on each other.  Before these
> changes if I made a change in a low level project or the base pom, or on
> startup I was having around 15 minutes of IAM building (ignoring the build
> time JDT had to do).  With this new structure it takes only a minute or two
> in the worst case (changing a dependency version in the base pom that
> effects all projects) (again, ignoring JDT build time in response to
> classpath changes), and very often takes no noticeably longer than a normal
> eclipse build.
> Does this approach seem sound?  What about the new dependency on EMF
> Compare?  I think this simplifies the builder code greatly by allowing
> things like resource modification checking code to be completely separate
> from the classpath updating code.  In addition, this lets us support
> non-Java projects built with maven more easily in the future.  If the
> consensus is that the approach is sound I'll check my changes into a branch
> so everyone can review further as soon as I have time to do so.
> Mike
>
>
> _______________________________________________
> iam-dev mailing list
> iam-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/iam-dev
>
>



--
Robert Dale
_______________________________________________
iam-dev mailing list
iam-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/iam-dev



--
Abel Muiño - http://ramblingabout.wordpress.com/

Back to the top