Well, I discovered that the car plugin was still caching old bits when car:install-modules was run. And I dug into it much deeper than I wanted to and eventually ended up re-writing the installation of artifacts.

It should now try a heck of a lot harder to reinstall bits that have changed. When installing modules, we check the sha1 of the configs, if they are the same, then we skip re-installing, but now we will continue to process the module's deps.

Deps are now checked if they need to be reinstalled, instead of just skipping. If the source dep's file size has changed, or the last modified time is greater than the target, we reinstall it.

Also now we are tracking all installed artifacts so we can easily skip ones we know that we have processed already, which speeds things up a itty bit.

And, I have added info logging when a dependency is installed, so now you can see what is really being installed. Debug logging with `mvn - X` will show the bits that are skipped and when they are being reinstalled, blah, blah. The side effect is that when a lot changes, then a lot of info logs are spit out for each dependency.... oh well.

I did a little bit of testing and it does appear that when something from modules/* changes (and nothing else) that only that one dependency will get copied into the Geronimo repository.... and similarly if just one configs/* changes, then just that one module will be re-installed.

 * * *

I think the one last thing might be that car:install-modules may need to use the Maven2RepositoryAdapter bits which I hacked into car:package to resolve SNAPSHOT artifacts directly using the Maven API... but I am not sure yet... and I'd rather not hack more of this in. But if I refactor it into less of a hack I might.

Anyways... *please* give it a whirl. I've pushed out the latest car- maven-plugin SNAPSHOT with all these fixes.

Next I guess we should try to make the car:package skip re-packaging unless something has really changed... but that is gonna be tricky, as we need to check the target/** and the effective pom.xml to see if anything has changed... ugh :-(

Then once we re-organize these modules into related groups it might be much easier to run small builds from specific trees, and then re- assembly to validate (ie. all activemq modules and configs all under one geronimo-activemq/* tree).

--jason

Reply via email to