You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@buildr.apache.org by Martin Grotzke <ma...@javakaffee.de> on 2009/03/01 23:21:39 UTC

run jetty from a known webapp directory or with at least a known classes folder

Hi,

I want to run our wicket application with the buildr jetty plugin and
want to use javarebel for reloading changed classes.

I noticed, that the buildr jetty plugin runs jetty from a tmp webapps
location like e.g.
  /tmp/Jetty_0_0_0_0_8080_mywebapp-1.0.0.war___s129z2/webapp

For javarebel I need to know/specify the location of classes that shall
be monitored for changes.

Is it possible to modify the jetty plugin so that it uses e.g.
target/classes or an exploded war in the target directory?

Thanx && cheers,
Martin


Re: run jetty from a known webapp directory or with at least a known classes folder

Posted by Martin Grotzke <ma...@javakaffee.de>.
Hi Rhett,

thanx for the feedback! I'll try this and give feedback then.

Cheers,
Martin


On Sun, 2009-03-01 at 20:18 -0600, Rhett Sutphin wrote:
> Hi Martin,
> 
> On Mar 1, 2009, at 4:21 PM, Martin Grotzke wrote:
> 
> > Hi,
> >
> > I want to run our wicket application with the buildr jetty plugin and
> > want to use javarebel for reloading changed classes.
> >
> > I noticed, that the buildr jetty plugin runs jetty from a tmp webapps
> > location like e.g.
> >  /tmp/Jetty_0_0_0_0_8080_mywebapp-1.0.0.war___s129z2/webapp
> >
> > For javarebel I need to know/specify the location of classes that  
> > shall
> > be monitored for changes.
> >
> > Is it possible to modify the jetty plugin so that it uses e.g.
> > target/classes or an exploded war in the target directory?
> 
> The jetty plugin's jetty.deploy method can directly deploy an exploded  
> webapp from whatever directory you specify.  buildr doesn't have a  
> built-in exploded webapp task (AFAIK).  Here's the one I use:
> 
>      directory(_('src/main/webapp/WEB-INF/lib'))
> 
>      task :explode => [compile, _('src/main/webapp/WEB-INF/lib')] do
>        packages.detect { |pkg| pkg.to_s =~ /war$/ }.tap do |war_package|
>          war_package.classes.each do |clz_src|
>            filter.from(clz_src).into(_('src/main/webapp/WEB-INF/ 
> classes')).run
>          end
>          war_package.libs.each do |lib|
>            cp lib.to_s, _('src/main/webapp/WEB-INF/lib')
>          end
>        end
>      end
> 
> It builds an exploded war in place over the src/main/webapp  
> directory.  The value of this is that changes to static resources and  
> JSPs are immediately picked up (without a build separate step).  If  
> you prefer, you could also write something which depends on the  
> package step and then unpacks the war somewhere under target.
> 
> In either case, you can use the built-in jetty support to deploy like  
> so:
> 
>    jetty.deploy "#{jetty.url}/path", _(exploded_path).to_s
> 
> Rhett
> 

Re: run jetty from a known webapp directory or with at least a known classes folder

Posted by Rhett Sutphin <rh...@detailedbalance.net>.
Hi Martin,

On Mar 1, 2009, at 4:21 PM, Martin Grotzke wrote:

> Hi,
>
> I want to run our wicket application with the buildr jetty plugin and
> want to use javarebel for reloading changed classes.
>
> I noticed, that the buildr jetty plugin runs jetty from a tmp webapps
> location like e.g.
>  /tmp/Jetty_0_0_0_0_8080_mywebapp-1.0.0.war___s129z2/webapp
>
> For javarebel I need to know/specify the location of classes that  
> shall
> be monitored for changes.
>
> Is it possible to modify the jetty plugin so that it uses e.g.
> target/classes or an exploded war in the target directory?

The jetty plugin's jetty.deploy method can directly deploy an exploded  
webapp from whatever directory you specify.  buildr doesn't have a  
built-in exploded webapp task (AFAIK).  Here's the one I use:

     directory(_('src/main/webapp/WEB-INF/lib'))

     task :explode => [compile, _('src/main/webapp/WEB-INF/lib')] do
       packages.detect { |pkg| pkg.to_s =~ /war$/ }.tap do |war_package|
         war_package.classes.each do |clz_src|
           filter.from(clz_src).into(_('src/main/webapp/WEB-INF/ 
classes')).run
         end
         war_package.libs.each do |lib|
           cp lib.to_s, _('src/main/webapp/WEB-INF/lib')
         end
       end
     end

It builds an exploded war in place over the src/main/webapp  
directory.  The value of this is that changes to static resources and  
JSPs are immediately picked up (without a build separate step).  If  
you prefer, you could also write something which depends on the  
package step and then unpacks the war somewhere under target.

In either case, you can use the built-in jetty support to deploy like  
so:

   jetty.deploy "#{jetty.url}/path", _(exploded_path).to_s

Rhett