Running, testing and debugging with the Maven2 Jetty Plugin |
This note is to describe the above plugin. which will run your web application in an embedded Jetty6 instance by just
typing "mvn jetty:run"
- No need to download or install Jetty manually, it's all automatic once the Maven project
descriptor's set up (the pom.xml)
Add the following to the <build><plugins>
block of your projects pom.xml
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> </plugin> |
In order to run Jetty on a webapp project which is structured according to the usual Maven defaults, you don't need to configure anything.
Simply type:
mvn jetty:run |
Due to a bug in maven or the maven-jetty-plugin this only works if no jetty artifact is present in the dependencies section of the pom.xml file. This is the case for wicket-quickstart, wicket-examples and wicket-threadtest. So the tips given here can't be applied to those projects.
I couldn't find a command line reference for maven2, but the one given for maven1 still aplies for the feature used here:
First set MAVEN_OPTS environment variable with the following command:
export MAVEN_OPTS='-Xdebug -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y' |
After setting this property, run "maven jetty:run" and it will block, waiting for a debug connection. If "suspend=n" is set, it will start right away.
Running Eclipse Open "Run --> External Tools --> External Tools... --> Program". Press "New launch configuration". On the "Main" tab, fill in the "Location:" as the full path to your "mvn" executable. For the "Working Directory:" select the workspace that matches your webapp. For "Arguments:" add jetty:run.
Move to the "Environment" tab and click the "New" button to add two new variables:
name |
value |
---|---|
MAVEN_OPTS |
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y |
JAVA_HOME |
Path to your java executable |
As above the jvm will start right away when "suspend=n" is set.
Running Eclipse Open "Run --> Debug... --> Remote Java Application". Press "New launch configuration". Fill in the dialog by selecting your webapp project for the "Project:" field, and ensure you are using the same port number as you specified in the address= property above.
Now all you need to do is Run/Debug and select the name of the debug setup you setup above.
This article is a gathering of information, credits need to be given to the authors of the pages behind the given links.
This setup will also allow you to debug your application under Netbeans.
Add the following to the <build><plugins>
block of your projects pom.xml
<plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>maven-jetty-plugin</artifactId> <configuration> <stopPort>9966</stopPort> <stopKey>jetty-stop</stopKey> <scanIntervalSeconds>10</scanIntervalSeconds> </configuration> </plugin> |
The stopPort and stopKey parameters can have arbitrary values.
Open the properties window of your Maven project and select Actions from the Categories list.
Find the Run action and change the Execute Goals value to jetty:stop jetty:run
.
Then, do the same for the Debug project action and set the following properties:
jpda.listen=maven netbeans.deploy.debugmode=true |
That's all!