224 lines
6.6 KiB
Markdown
224 lines
6.6 KiB
Markdown
# 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:
|
|
|
|
```xml
|
|
<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:
|
|
|
|
```xml
|
|
<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
|
|
|
|
Example:
|
|
|
|
```xml
|
|
<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.
|
|
|
|
```xml
|
|
<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>
|
|
|
|
``` |