如何使用另一个Jenkins插件创建的类实例

时间:2018-04-24 16:24:35

标签: java jenkins jenkins-plugins

我想使用另一个插件创建的类的实例。

特别是,我想使用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实例?

1 个答案:

答案 0 :(得分:0)

getInstance()可能假设在启动应用程序时已经创建了一个实例,并且它会检索该实例。由于您从库中调用该方法,因此没有发生该启动,因此没有实例可以返回。

如果可以,请查看getInstance()代码,并检查库类中的任何mq-notifier应用程序启动或主要方法。看看它如何实例化MQConnection实例,你需要做同样的事情。

在另一个项目中可能会有一些依赖注入。

  

我想使用mq-notifier-plugin创建和维护的MQConnection实例。

你要么必须让两个应用程序并排运行并相互通信,要么你必须弄清楚如何自己实例化MQConnection。

  

似乎没有任何构建步骤消息被添加到实例的队列中,只是默默地继续。

这是否远程运行?如果你有一个远程MQConnection实例正在运行,那么简单地调用getInstance将不足以让两个单独的程序相互通信。