...
Code Block |
---|
$ mvn archetype:generate -B \ -DgroupId=tutorial \ -DartifactId=tutorial \ -DarchetypeGroupId=org.apache.struts \ -DarchetypeArtifactId=struts2-archetype-blank \ -DarchetypeVersion=2.1.6 $ ls tutorial/ $ cd tutorial $ ls pom.xml src/ |
Depending on the state of your local system you may see Maven downloading various libraries (known as "downloading the internet", which is what it seems Maven does sometimes). Be patient--Maven is basically setting up your required libraries automatically.
Project Structure
The source code structure follows the normal Maven directory structure. The blank-archetype does not include all of the directories listed in the Maven structure reference page. Our project's structure looks like this:
...
It can take a little while to get used to, but ultimately it provides good separation of "types" of things, and becomes second-nature pretty quickly. Note that it's possible to use a non-Maven directory layout with Maven projects, but this can be challenging at some points.
Building The Project
There are several different ways we can go about building our project, from simple compilation up to actually running the web application--all from within Maven.
Compilation
Code Block |
---|
$ mvn compile |
will create a target
directory containing the compiled classes. By itself this isn't terribly useful.
Testing
Running
Code Block |
---|
$ mvn test |
will compile the application and run the included unit tests. Blank-archetype's unit tests are not extensive, but provide a simple starting point for writing more complex, application-specific tests.
One we've run the Maven test command we'll notice there's a target/surefire-reports
directory. The Maven Surefire Plugin is how Maven runs our unit tests. By default it will create test results in XML and text formats in the target/surefire-reports
directory. These files can be examined to get further information regarding the failed tests.
Assembling (Creating a WAR)
Running
We can run blank-archetype using the Jetty server via the Maven Jetty Plugin by executing the Jetty plugin's run
command:
Code Block |
---|
$ mvn jetty:run |
Once we've run the application we can see that it works by visiting localhost:8080/tutorial/example/HelloWorld.action
as a sanity check.
Application Documentation
The application consists of a few test actions demonstrating simple validation and package-level property (resource) files.