Home > Guides > Core Developers Guide > Struts 2 Maven Archetypes |

Apache Struts 2 Documentation
Struts 2 Maven Archetypes
Edit Page Browse Space Add Page Add News

Struts 2 provides several Maven archetypes that create a starting point for our own applications.

Contents

## Quickstart

A recommended way to start with Struts2 archetypes is to work with the archetype catalog.

## Available Archetypes

### The Blank Convention Archetype (struts2-archetype-convention)

#### Features

- Convention-based validation
- Example actions
- Package-level resource bundle
- Unit-testing
- Google AppEgine aware

### The Blank Archetype (struts2-archetype-blank)

The Struts 2 Blank Archetype ("blank-archetype") provides a minimal, but complete, Struts 2 application. It demonstrates some of the most basic Struts 2 concepts.

#### Features

- XML-based configuration, demonstrates including additional config file
- Example actions
- Package-level resource bundle
- XML-based validation
- Unit-testing

See the Struts 2 Blank Archetype page for more information, including some basic Maven information, how to build and run the app, and basic application information.

### The Starter Archetype (struts2-archetype-starter)

The Starter archetype creates a more featured application using several common technologies used in production applications.

#### Features

- Sitemesh integration
- Action example (instantiated both through Spring and Struts)
- Spring integration
- Validation example (action and action-alias level)
- Conversion example (global and action level)
- Resource bundle (both global, action and package level)

### The AngularJS Archetype (struts2-archetype-angularjs)

#### Features

- Convention-based Action Configuration
- Example actions with JSON Result
- Example for AngularJS and Struts2 Integration

### The Portlet Blank Archetype (struts2-archetype-portlet)

The Portlet blank archetype creates a minimally populated JSR 168 portlet.

#### Features

- View, Edit, and Help mode examples
- Simple form for preferences in Edit mode
- Can be deployed as a servlet or portlet application
- Can use Maven Jetty plugin to deploy with the pluto-embedded profile (usage 'mvn jetty:run -Ppluto-embedded', then access http://localhost:8080/<artifactId>/pluto/index.jsp)

### The Portlet Database Archetype (struts2-archetype-dbportlet)

The Portlet database archetype creates a simple JSR 168 portlet that displays the contents of a database table.

#### Features

- Uses Spring and Hsql to show a real database query
- Builtin caching of query results
- View, Edit, and Help mode examples
- Simple form for preferences in Edit mode
- Can be deployed as a servlet or portlet application
- Can use Maven Jetty plugin to deploy as a servlet webapp

### The Plugin Archetype (struts2-archetype-plugin)

#### Features

- Example new result type
- Example XML-based configuration

## Creating an Application Using a Maven Archetype

Run the following command from your new project's parent directory. The project will be created in a sub-directory named after the `artifactId` parameter.

The first two parameters, `groupId` and `artifactId`, should be set according to your needs:

- `groupId`
  This should be the root package of your application, e.g., com.mycompany.myapp.
- `artifactId`
  Names the project directory that will be created in the current directory.

where <CURRENT_STRUTS_VERSION> is archetype's version you want to use, eg. 2.3.15.1

### Staging repository

If the above command will fail because of missing archetypes in central repository, you can try to use staging repository like below

or this

### Archetype Parameters

The `-B` option runs `archetype:generate` in batch mode; it avoids a prompt to confirm our settings.

Parameter | Description
--- | ---
`groupId` | The id for the group the application belongs to. Usually is the root package for applications in your company, e.g. com.mycompany
`artifactId` | The id for the project. The project will be created a sub-directory named after this parameter.
`archetypeGroupId` | The group id of the archetype. Will always be `org.apache.struts` for Struts archetypes
`archetypeArtifactId` | The id of the archetype
`archetypeVersion` | The version of the archetype
`package` | (Optional) The base Java package to use for generated source code. Defaults to `archetypeGroupId` if not specified.
`remoteRepositories` | (Optional) A list of remote repositories that contain the archetype.

## Command Quick Reference

These commands are used from the directory created by the archetype plugin (the project's sub-directory that was created in the previous step).

- To build

- To create IntelliJ IDEA project files

- To create Eclipse project files

- To run test cases

- To clean up (removes generated artifacts)

- To package (creates a WAR file)

- To grab necessary JAR files etc.

- To run it with Jetty

Children Show Children Hide Children
$page.link($child) (Apache Struts 2 Documentation)