Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在多个Maven插件Mojo中共享同一实例?_Maven_Maven Plugin - Fatal编程技术网

如何在多个Maven插件Mojo中共享同一实例?

如何在多个Maven插件Mojo中共享同一实例?,maven,maven-plugin,Maven,Maven Plugin,我正在实现在内存数据库服务器中启动和停止的Maven插件。我有两个mojoServerStart和ServerStop。在ServerStop中,我创建了一个数据库服务器实例,并调用server.start()启动它。在ServerStopMojo中,我希望获得要调用server.stop()的相同服务器实例。我是否可以创建服务器实例,然后将其注入我的mojo中 以下是示例代码: @MojoGoal("start") public class StartServerMojo extends Ab

我正在实现在内存数据库服务器中启动和停止的Maven插件。我有两个mojo
ServerStart
ServerStop
。在
ServerStop
中,我创建了一个数据库服务器实例,并调用
server.start()
启动它。在
ServerStop
Mojo中,我希望获得要调用
server.stop()
的相同服务器实例。我是否可以创建服务器实例,然后将其注入我的mojo中

以下是示例代码:

@MojoGoal("start")
public class StartServerMojo extends AbstractMojo {

    //How to instantiate and inject the server here?
    private Server server;

    public void execute() throws MojoExecutionException {
    server.start();
    }

}

@MojoGoal("stop")
public class StopServerMojo extends AbstractMojo {

    //How to instantiate and inject the server here?
    private Server server;

    public void execute() throws MojoExecutionException {
    server.stop();
    }

}

在AbtractMojo上保持pluginText中的服务器实例可用。请记住,您无法通过故障保护测试访问它


另一种方法是将插件转换为Cargo maven插件容器的形式,类似于我对OSGi框架所做的方式(https://github.com/TuomasKiviaho/org.codehause.cargo.container.osgi). Cargo项目旨在针对JavaEE容器进行测试,但这对我来说不是问题。

您可以定义此服务器链接

/**
 * @parameter
 * */
private Server server;
并在引用插件的pom中对其进行配置

比如:


价值1
价值2
...

请参见此处:

2个问题。1) 你想怎么把它注射到你的mojo里?例如,您是否在某处配置了它?2) 我以前从未见过这样的注释(
@MojoGoal(“stop”)
)。你能告诉我你在哪里找到的吗?:)安德鲁,我没有配置它。这是我的问题,如何实例化它并注入。注释来自JFrog的Maven Anno Mojo扩展()。它允许使用Java注释而不是XDoclet注释。实例化服务器需要做什么?我的意思是编程。
<configuration>
<server>
 <serverField1>value1</serverField1>
 <serverField2>value2</serverField2>
 ...
</server>
</configuration>