Starting a jetty server for client side tests

2008-12-11 Thread richard schmidt
I have a  WAR project that exposes some web services
I also have a JAR project that acts as a client application for the web
services. The client application makes http requests to the web services.

To run unit tests I need to set up a jetty server running the web services.

I have tried the following

1) use the maven-dependency-plugin to extract the correct WAR from the
repository and copy it to sub directory in target.

2) use the maven-jetty-plugin to start a server running the WAR downloaded
in the previous step.  The server can be started before running the unit
tests and stopped when the tests have finished.

The jetty plugin is as follows


plugin
groupIdorg.mortbay.jetty/groupId
artifactIdmaven-jetty-plugin/artifactId
configuration
stopPort9966/stopPort
webApp
${basedir}/target/iceCreamWar/ICECream.war
/webApp
stopKeystop/stopKey
/configuration
executions
execution
idstart-jetty/id
phaseprocess-test-classes/phase
goals
goalrun/goal
/goals
/execution
execution
idstop-jetty/id
phaseprepare-package/phase
goals
goalstop/goal
/goals
/execution
/executions
/plugin

However if I run it I get the following error message

[ERROR] BUILD ERROR
[INFO]

[INFO] Webapp source directory
C:\Workspace_MavenBuild\ICECreamClient\src\main\webapp does not exist

which is expected as the rungoal assumes you have a normal web project
with a context.

If I change the goal to run-war, then the jetty server does start for the
unit test, but only afterwoods. - the jetty documentation talks about
Invokes the execution of the lifecycle phase package prior to executing
itself. which I presume is what is happening.

Any ideas how to get around this one?

Richard


RE: Starting a jetty server for client side tests

2008-12-11 Thread Edelson, Justin
You might want to try using cargo instead. It should allow you to deploy
the WAR project into a container and start up that container.

Something like:
configuration
  waittrue/wait
  container
containerIdjetty6x/containerId
  /container
  configuration
deployables
  deployable
 groupIdGROUP_ID/groupId
 artifactIdARTIFACT_ID/artifactId
 versionVERSION/version
 typewar/type
  /deployable
/deployables
  /configuration
  ...
/configuration 

-Original Message-
From: richard schmidt [mailto:hangst...@gmail.com] 
Sent: Thursday, December 11, 2008 3:48 PM
To: users@maven.apache.org
Subject: Starting a jetty server for client side tests

I have a  WAR project that exposes some web services I also have a JAR
project that acts as a client application for the web services. The
client application makes http requests to the web services.

To run unit tests I need to set up a jetty server running the web
services.

I have tried the following

1) use the maven-dependency-plugin to extract the correct WAR from the
repository and copy it to sub directory in target.

2) use the maven-jetty-plugin to start a server running the WAR
downloaded in the previous step.  The server can be started before
running the unit tests and stopped when the tests have finished.

The jetty plugin is as follows


plugin
groupIdorg.mortbay.jetty/groupId
artifactIdmaven-jetty-plugin/artifactId
configuration
stopPort9966/stopPort
webApp
${basedir}/target/iceCreamWar/ICECream.war
/webApp
stopKeystop/stopKey
/configuration
executions
execution
idstart-jetty/id
phaseprocess-test-classes/phase
goals
goalrun/goal
/goals
/execution
execution
idstop-jetty/id
phaseprepare-package/phase
goals
goalstop/goal
/goals
/execution
/executions
/plugin

However if I run it I get the following error message

[ERROR] BUILD ERROR
[INFO]

[INFO] Webapp source directory
C:\Workspace_MavenBuild\ICECreamClient\src\main\webapp does not exist

which is expected as the rungoal assumes you have a normal web project
with a context.

If I change the goal to run-war, then the jetty server does start for
the unit test, but only afterwoods. - the jetty documentation talks
about Invokes the execution of the lifecycle phase package prior to
executing itself. which I presume is what is happening.

Any ideas how to get around this one?

Richard

-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: Starting a jetty server for client side tests

2008-12-11 Thread richard schmidt
Gave it a try - it almost works!
Based on the example projects, I tried the following

1) Added a normal dependency ( icecream.war.version} is defined elsewhere

   dependency
groupIdcom.metservice/groupId
artifactIdICECream/artifactId
version${icecream.war.version}/version
typewar/type
/dependency

2) Added the cargo plug

plugin
groupIdorg.codehaus.cargo/groupId
artifactIdcargo-maven2-plugin/artifactId
configuration
waittrue/wait
container
containerIdjetty6x/containerId
log
${project.build.directory}/${containerId}/cargo.log
/log
typeembedded/type
/container

deployables
deployable
groupIdcom.metservice/groupId
artifactIdICECream/artifactId
typewar/type
properties
contextICECream/context
/properties

/deployable
/deployables

/configuration
/plugin

3) ran the cargo:start target


Jetty started on port 8080 but did not deploy my WAR - only a thing called
cargocpc.war

I cant see anything obviously wrong

Richard


Re: Starting a jetty server for client side tests

2008-12-11 Thread Wayne Fay
 plugin
 groupIdorg.codehaus.cargo/groupId
 artifactIdcargo-maven2-plugin/artifactId

No version declared for a plugin gives unpredictable results. It is
possible that the version of cargo that Maven has chosen to use for
this particular build does not support the deployables syntax that
you are using, or there's a bug related to it.

You really should post this on the Cargo Users list anyway...

Wayne

-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org