karaf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "james strachan (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (KARAF-222) mvn karaf:run plugin, like jetty:run
Date Fri, 25 Mar 2011 20:39:05 GMT

    [ https://issues.apache.org/jira/browse/KARAF-222?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13011407#comment-13011407

james strachan commented on KARAF-222:

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
${basedir}/target/classes dir and Karaf interprets that actual physical dir as an exploded
bundle to be watched?

> mvn karaf:run plugin, like jetty:run
> ------------------------------------
>                 Key: KARAF-222
>                 URL: https://issues.apache.org/jira/browse/KARAF-222
>             Project: Karaf
>          Issue Type: New Feature
>            Reporter: james strachan
> Did a quick google & couldn't see one yet - please close if there is one already
> The really nice thing about jetty:run is it watches the source code & target/classes
dir & auto redeploys on change, so there's no deploy step - you just hack & compile
(which your IDE or incremental compile can do - e.g. "mvn scala:cc").
> For added bonus would be being able to add some extra bundles, so it can be a RAD way
to hack bundles. Maybe folks could have some integration junit tests automatically rerun whenever
the bundle is redeployed?

This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

View raw message