我想使用另一个插件创建的类的实例。
特别是,我想使用mq-notifier-plugin创建和维护的MQConnection
实例。
我已将此插件声明为POM中的依赖项:
<dependency>
<groupId>com.sonymobile.jenkins.plugins.mq</groupId>
<artifactId>mq-notifier</artifactId>
<version>1.2.5</version>
</dependency>
导入课程:
import com.sonymobile.jenkins.plugins.mq.mqnotifier.MQConnection;
尝试获取实例并在workflowstep中添加消息:
..
public static class TestConnectionWorkflowStep extends AbstractSynchronousNonBlockingStepExecution<Void> {
private static final long serialVersionUID = 1L;
@StepContextParameter
private transient Run build;
@StepContextParameter
transient TaskListener listener;
@Override
protected Void run() throws Exception {
..
// fill in with exchange, routing_key, data, properties
MQConnection.getInstance().addMessageToQueue(..);
}
}
编译好。我还指示MQConnection
类在添加消息时记录。
似乎没有任何构建步骤消息被添加到实例的队列中,只是默默地继续。
正如预期的那样,我仍然看到来自mq-notifier-plugin的消息显示正常。
我已尝试使用Jenkins.getInstance().getPlugin(MQConnection.class)
但由于MQConnection
不是Plugin
的子类而无效。
如何从插件中访问MQConnection
实例?
答案 0 :(得分:0)
getInstance()可能假设在启动应用程序时已经创建了一个实例,并且它会检索该实例。由于您从库中调用该方法,因此没有发生该启动,因此没有实例可以返回。
如果可以,请查看getInstance()代码,并检查库类中的任何mq-notifier应用程序启动或主要方法。看看它如何实例化MQConnection实例,你需要做同样的事情。
在另一个项目中可能会有一些依赖注入。
我想使用mq-notifier-plugin创建和维护的MQConnection实例。
你要么必须让两个应用程序并排运行并相互通信,要么你必须弄清楚如何自己实例化MQConnection。
似乎没有任何构建步骤消息被添加到实例的队列中,只是默默地继续。
这是否远程运行?如果你有一个远程MQConnection实例正在运行,那么简单地调用getInstance将不足以让两个单独的程序相互通信。