Since Artemis 1.1.0 Artemis provides the possibility of using Maven Plugins to manage the life cycle of servers.
## When to use it
These Maven plugins were initially created to manage server instances across our examples. They can create a server, start, and do any CLI operation over servers.
You could for example use these maven plugins on your testsuite or deployment automation.
## Goals
There are three goals that you can use
- create
This will create a server accordingly to your arguments. You can do some extra tricks here such as installing extra libraries for external modules.
- cli
This will perform any CLI operation. This is basically a maven expression of the CLI classes
- runClient
This is a simple wrapper around classes implementing a static main call. Notice that this won't spawn a new VM or new Thread.
## Declaration
On your pom, use the plugins section:
```xml
<build>
<plugins>
<plugin>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-maven-plugin</artifactId>
```
## create goal
I won't detail every operation of the create plugin here, but I will try to describe the main parameters:
Name | Description
:--- | :---
configuration | A place that will hold any file to replace on the configuration. For instance if you are providing your own broker.xml. Default is "${basedir}/target/classes/activemq/server0"
home | The location where you downloaded and installed artemis. Default is "${activemq.basedir}"
alternateHome | This is used case you have two possible locations for your home (e.g. one under compile and one under production
instance | Where the server is going to be installed. Default is "${basedir}/target/server0"
liblist[] | A list of libraries to be installed under ./lib. ex: "org.jgroups:jgroups:3.6.0.Final"
Example:
```xml
<executions>
<execution>
<id>create</id>
<goals>
<goal>create</goal>
</goals>
<configuration>
<ignore>${noServer}</ignore>
</configuration>
</execution>
```
## cli goal
Some properties for the CLI
Name | Description
:--- | :---
configuration | A place that will hold any file to replace on the configuration. For instance if you are providing your own broker.xml. Default is "${basedir}/target/classes/activemq/server0"
home | The location where you downloaded and installed artemis. Default is "${activemq.basedir}"
alternateHome | This is used case you have two possible locations for your home (e.g. one under compile and one under production
instance | Where the server is going to be installed. Default is "${basedir}/target/server0"
Similarly to the create plugin, the artemis exampels are using the cli plugin. Look at them for concrete examples.
Example:
```xml
<execution>
<id>start</id>
<goals>
<goal>cli</goal>
</goals>
<configuration>
<spawn>true</spawn>
<ignore>${noServer}</ignore>
<testURI>tcp://localhost:61616</testURI>
<args>
<param>run</param>
</args>
</configuration>
</execution>
```
### runClient goal
This is a simple solution for running classes implementing the main method.
Name | Description
:--- | :---
clientClass | A class implement a static void main(String arg[])
args | A string array of arguments passed to the method