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>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<configuration>
<stopPort>9966</stopPort>
<webApp>
${basedir}/target/iceCreamWar/ICECream.war
</webApp>
<stopKey>stop</stopKey>
</configuration>
<executions>
<execution>
<id>start-jetty</id>
<phase>process-test-classes</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
<execution>
<id>stop-jetty</id>
<phase>prepare-package</phase>
<goals>
<goal>stop</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 "run"goal 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

Reply via email to