Fork me on GitHub
Edit on GitHub

Struts 2 Maven Archetypes

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 use archetype:generate goal with filter parameter.

mvn archetype:generate -Dfilter=org.apache:struts

Available Archetypes

The Blank Convention Archetype (struts2-archetype-convention)

Features

mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
                          -DartifactId=myWebApp \
                          -DarchetypeGroupId=org.apache.struts \
                          -DarchetypeArtifactId=struts2-archetype-convention

The Blank Archetype (struts2-archetype-blank)

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.

mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
                          -DartifactId=myWebApp \
                          -DarchetypeGroupId=org.apache.struts \
                          -DarchetypeArtifactId=struts2-archetype-blank

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

mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
                          -DartifactId=myWebApp \
                          -DarchetypeGroupId=org.apache.struts \
                          -DarchetypeArtifactId=struts2-archetype-starter

The AngularJS Archetype (struts2-archetype-angularjs)

Features

mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
                          -DartifactId=myWebApp \
                          -DarchetypeGroupId=org.apache.struts \
                          -DarchetypeArtifactId=struts2-archetype-angularjs

The Portlet Blank Archetype (struts2-archetype-portlet)

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

Features

mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
                          -DartifactId=myWebApp \
                          -DarchetypeGroupId=org.apache.struts \
                          -DarchetypeArtifactId=struts2-archetype-portlet

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

mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
                          -DartifactId=myWebApp \
                          -DarchetypeGroupId=org.apache.struts \
                          -DarchetypeArtifactId=struts2-archetype-dbportlet

The Plugin Archetype (struts2-archetype-plugin)

Features

mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \
                          -DartifactId=myPlugin \
                          -DarchetypeGroupId=org.apache.struts \
                          -DarchetypeArtifactId=struts2-archetype-plugin

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:

mvn archetype:generate -B \
                       -DgroupId=tutorial \
                       -DartifactId=tutorial \
                       -DarchetypeGroupId=org.apache.struts \
                       -DarchetypeArtifactId=struts2-archetype-blank

Staging repository

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

Add staging repository to your settings.xml

<settings>
  <profiles>
    <profile>
      <id>staging</id>
      <repositories>
        <repository>
          <id>archetype</id>
          <url>https://repository.apache.org/content/repositories/snapshots/</url>
          <releases>
            <enabled>true</enabled>
            <checksumPolicy>fail</checksumPolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <checksumPolicy>warn</checksumPolicy>
          </snapshots>
        </repository>
      </repositories>
    </profile>
  </profiles>
</settings>

Use staging profile in the command.

mvn archetype:generate -B \
                       -DgroupId=tutorial \
                       -DartifactId=tutorial \
                       -DarchetypeGroupId=org.apache.struts \
                       -DarchetypeArtifactId=struts2-archetype-blank \
                       -Pstaging

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

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).

   mvn install
   mvn test
   mvn clean
   mvn package
   mvn initialize
   mvn jetty:run