Hey David, long time no speak!
Sounds like we're almost there. Some background...
So the really nice thing about "mvn jetty:run" is you don't have to wait for the build process to make a big WAR then copy it to your container which then unpacks it again; mvn jetty:run just watches your target/classes dir for changes then starts up the web app without needing the WAR. Then if you edit some code in, say, eclipse/IDEA and it recompiles it, the jetty:run plugin detects the classes changed in target/classes and restarts the WAR application inside the web container; without the JVM + Jetty restarting. So you get really RAD deployment of your application without really restarting the container.
Something similar would be awesome; where rather than making the jar of the bundle (so just the compile goal is done), a karaf is started (maybe some dependent bundles are started too), the target/classes dir is used to start the bundle of the project you're doing "mvn karaf:run" inside. Then if you change any code and its compiled by your IDE incrementally, karaf:run detects it, stops the bundle & restarts it again with the new classes.
Basically it gives you very fast re-run times as you don't have to stop + start maven or the JVM running Karaf; you just reload the bundle on the fly.
Karaf already supports the expanded bundle format already; so I don't think it'd be hard to do; its kinda like treating the 'target' dir as the hotdeploy dir for a new karaf container thats started in the "karaf:run" goal, then the classes dir is the bundle for the application; then it just reuses the normal karaf file watcher stuff so the bundle is reloaded if changes are made inside target/classes.
OK a slightly wacky idea now; I wonder if you're working on 3 different bundles in development which all work together inside Karaf; I wonder if it'd be possible to have a flavour of karaf:run where all you really mean is "deploy my target/classes as a bundle into the server X". i.e. so you could change code in any of your 3 projects and Karaf would auto-reload the bundles that changed. I guess you could do this today with a shell script, just creating sym links to your target/classes directories to directories inside your karaf servers deploy dir? Maybe there's a way to add a custom file type to Karaf's deployment which is a kinda pseudo file link to the developers IDE build of a bundle? So a maven goal copies myBundleName.link into your karaf servers hotdeploy dir; the contents of myBundleName.link is the full path of the $
/target/classes dir and Karaf interprets that actual physical dir as an exploded bundle to be watched?