- Introduction
- 1. Legal Notice
- 2. Preface
- 3. Project Info
- 4. Messaging Concepts
- 5. Architecture
- 6. Using the Server
- 7. Using JMS
- 8. Using Core
- 9. Mapping JMS Concepts to the Core API
- 10. The Client Classpath
- 11. Examples
- 12. Routing Messages With Wild Cards
- 13. Understanding the Apache ActiveMQ Artemis Wildcard Syntax
- 14. Filter Expressions
- 15. Persistence
- 16. Configuring Transports
- 17. Detecting Dead Connections
- 18. Detecting Slow Consumers
- 19. Resource Manager Configuration
- 20. Flow Control
- 21. Guarantees of sends and commits
- 22. Message Redelivery and Undelivered Messages
- 23. Message Expiry
- 24. Large Messages
- 25. Paging
- 26. Queue Attributes
- 27. Scheduled Messages
- 28. Last-Value Queues
- 29. Message Grouping
- 30. Extra Acknowledge Modes
- 31. Management
- 32. Security
- 33. Resource Limits
- 34. The JMS Bridge
- 35. Client Reconnection and Session Reattachment
- 36. Diverting and Splitting Message Flows
- 37. Core Bridges
- 38. Duplicate Message Detection
- 39. Clusters
- 40. High Availability and Failover
- 41. Graceful Server Shutdown
- 42. Libaio Native Libraries
- 43. Thread management
- 44. Logging
- 45. REST Interface
- 46. Embedding Apache ActiveMQ Artemis
- 47. Spring Integration
- 48. AeroGear Integration
- 49. VertX Integration
- 50. Intercepting Operations
- 51. Protocols and Interoperability
- 52. Tools
- 53. Maven Plugin
- 54. Troubleshooting and Performance Tuning
- 55. Configuration Reference
- Published using GitBook

# ActiveMQ Artemis Documentation

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

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

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

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