activemq-artemis/docs/user-manual/maven-plugin.adoc

259 lines
6.5 KiB
Plaintext

= Maven Plugins
:idprefix:
:idseparator: -
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>stop</goal>
</goals>
<configuration>
<ignore>${noServer}</ignore>
</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>
----