# Maven Plugins

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:

    <build>
       <plugins>
          <plugin>
             <groupId>org.apache.activemq</groupId>
             <artifactId>artemis-maven-plugin</artifactId>
          </plugin>
       </plugins>
    </build>

## 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:

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

    <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

Example:

    <execution>
      <id>runClient</id>
      <goals>
         <goal>runClient</goal>
      </goals>
      <configuration>
         <clientClass>org.apache.activemq.artemis.jms.example.QueueExample</clientClass>
      </configuration>
    </execution>

### Complete example

The following example is a copy of the /examples/features/standard/queue example. You may refer to it directly under the examples directory tree.

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
       <modelVersion>4.0.0</modelVersion>

       <parent>
          <groupId>org.apache.activemq.examples.broker</groupId>
          <artifactId>jms-examples</artifactId>
          <version>1.1.0</version>
       </parent>

       <artifactId>queue</artifactId>
       <packaging>jar</packaging>
       <name>ActiveMQ Artemis JMS Queue Example</name>

       <properties>
          <activemq.basedir>${project.basedir}/../../../..</activemq.basedir>
       </properties>

       <dependencies>
          <dependency>
             <groupId>org.apache.activemq</groupId>
             <artifactId>artemis-jms-client</artifactId>
             <version>${project.version}</version>
          </dependency>
       </dependencies>

       <build>
          <plugins>
             <plugin>
                <groupId>org.apache.activemq</groupId>
                <artifactId>artemis-maven-plugin</artifactId>
                <executions>
                   <execution>
                      <id>create</id>
                      <goals>
                         <goal>create</goal>
                      </goals>
                      <configuration>
                         <ignore>${noServer}</ignore>
                      </configuration>
                   </execution>
                   <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>
                   <execution>
                      <id>runClient</id>
                      <goals>
                         <goal>runClient</goal>
                      </goals>
                      <configuration>
                         <clientClass>org.apache.activemq.artemis.jms.example.QueueExample</clientClass>
                      </configuration>
                   </execution>
                   <execution>
                      <id>stop</id>
                      <goals>
                         <goal>cli</goal>
                      </goals>
                      <configuration>
                         <ignore>${noServer}</ignore>
                         <args>
                            <param>stop</param>
                         </args>
                      </configuration>
                   </execution>
                </executions>
                <dependencies>
                   <dependency>
                      <groupId>org.apache.activemq.examples.broker</groupId>
                      <artifactId>queue</artifactId>
                      <version>${project.version}</version>
                   </dependency>
                </dependencies>
             </plugin>
          </plugins>
       </build>

    </project>

# results matching ""

# No results matching ""