An open API service indexing awesome lists of open source software.

https://github.com/apache/struts-archetypes

Mirror of Apache Struts Archetypes
https://github.com/apache/struts-archetypes

java struts web-framework

Last synced: 11 months ago
JSON representation

Mirror of Apache Struts Archetypes

Awesome Lists containing this project

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
```