# struts-archetypes **Repository Path**: mirrors_apache/struts-archetypes ## Basic Information - **Project Name**: struts-archetypes - **Description**: Mirror of Apache Struts Archetypes - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-22 - **Last Updated**: 2025-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Struts 2 Maven Archetypes Struts 2 provides several [Maven](https://maven.apache.org/) archetypes that create a starting point for our own applications. ## 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 + Convention-based validation + Example actions + Package-level resource bundle + Unit-testing + Google AppEgine aware ``` mvn archetype:generate -B -DgroupId=com.mycompany.mysystem \ -DartifactId=myWebApp \ -DarchetypeGroupId=org.apache.struts \ -DarchetypeArtifactId=struts2-archetype-convention ``` ### 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. ``` 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 + 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) ``` 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 + Convention-based Action Configuration + Example actions with JSON Result + Example for AngularJS and Struts2 Integration ``` 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 + 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//pluto/index.jsp) ``` 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 + 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 ``` 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 + Example new result type + Example XML-based configuration ``` 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: + `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. ``` 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 ``` staging archetype https://repository.apache.org/content/repositories/snapshots/ true fail true warn ``` 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). + To install ``` mvn install ``` + To run test cases ``` mvn test ``` + To clean up (removes generated artifacts) ``` mvn clean ``` + To package (creates a WAR file) ``` mvn package ``` + To grab necessary JAR files etc. ``` mvn initialize ``` + To run it with Jetty ``` mvn jetty:run ```