自 Artemis 1.1.0 起,Artemis 提供了使用 Maven 插件来管理服务器生命周期的可能性。
1. 何时使用
这些 Maven 插件最初是为了管理我们示例中的服务器实例而创建的。它们可以创建服务器、启动服务器,并在服务器上执行任何 CLI 操作。
例如,您可以在测试套件或部署自动化中使用这些 maven 插件。
2. 目标
您可以使用三个目标
- create
-
这将根据您的参数创建一个服务器。您可以在此处执行一些额外的操作,例如为外部模块安装额外的库。
- cli
-
这将执行任何 CLI 操作。这基本上是 CLI 类的一个 Maven 表达式。
- runClient
-
这是一个围绕实现静态 main 调用的类的简单包装。请注意,这不会生成新的 VM 或新线程。
3. 声明
在您的 pom 中,使用 plugins 部分
<build>
<plugins>
<plugin>
<groupId>org.apache.activemq</groupId>
<artifactId>artemis-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
4. create 目标
我不会在这里详细说明 create 插件的每个操作,但我会尝试描述主要参数
名称 | 描述 |
---|---|
configuration |
一个将保存任何要在配置中替换的文件的位置。例如,如果您提供自己的 broker.xml。默认值为“${basedir}/target/classes/activemq/server0” |
home |
您下载和安装 artemis 的位置。默认值为“${activemq.basedir}” |
alternateHome |
如果您有两个可能的位置用于您的 home(例如,一个在编译下,一个在生产下)时,就会用到这个 |
instance |
服务器将要安装的位置。默认值为“${basedir}/target/server0” |
liblist[] |
要在 ./lib 下安装的库列表。例如:“org.jgroups:jgroups:3.6.0.Final” |
示例
<execution>
<id>create</id>
<goals>
<goal>create</goal>
</goals>
<configuration>
<ignore>${noServer}</ignore>
</configuration>
</execution>
5. cli 目标
CLI 的一些属性
名称 | 描述 |
---|---|
configuration |
一个将保存任何要在配置中替换的文件的位置。例如,如果您提供自己的 broker.xml。默认值为“${basedir}/target/classes/activemq/server0” |
home |
您下载和安装 artemis 的位置。默认值为“${activemq.basedir}” |
alternateHome |
如果您有两个可能的位置用于您的 home(例如,一个在编译下,一个在生产下)时,就会用到这个 |
instance |
服务器将要安装的位置。默认值为“${basedir}/target/server0” |
与 create 插件类似,artemis 示例也使用 cli 插件。请查看它们以获取具体示例。
示例
<execution>
<id>start</id>
<goals>
<goal>cli</goal>
</goals>
<configuration>
<spawn>true</spawn>
<ignore>${noServer}</ignore>
<testURI>tcp://127.0.0.1:61616</testURI>
<args>
<param>run</param>
</args>
</configuration>
</execution>
5.1. runClient 目标
这是用于运行实现 main 方法的类的简单解决方案。
名称 | 描述 |
---|---|
clientClass |
一个实现静态 void main(String arg[]) 的类 |
args |
传递给方法的参数的字符串数组 |
示例
<execution>
<id>runClient</id>
<goals>
<goal>runClient</goal>
</goals>
<configuration>
<clientClass>org.apache.activemq.artemis.jms.example.QueueExample</clientClass>
</configuration>
</execution>
5.2. 完整示例
以下示例是 /examples/features/standard/queue 示例的副本。您可以在示例目录树下直接参考它。
<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://127.0.0.1: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>