2012-02-29 117 views
0

我正在實現啓動和停止內存數據庫服務器的Maven插件。我有兩個Mojos ServerStartServerStop。在ServerStop中,我創建了一個數據庫服務器實例並開始呼叫server.start()。在ServerStop Mojo我想獲得一個服務器的實例來調用server.stop()。我可以以某種方式創建Server實例,然後將它注入到我的Mojos中?如何在多個Maven插件Mojos中共享實例相同的實例?

下面是示例代碼:

@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(); 
    } 

} 
+0

2個問題。 1)你想如何將它注入你的mojos?例如,你有配置的地方嗎? 2)我之前沒有看到過這樣的註解('@MojoGoal(「stop」)')。你能告訴我你在哪裏找到它嗎? :) – 2012-02-29 11:46:16

+0

安德魯,我沒有配置它。這是我的問題,如何實例化並注入。註釋來自JFrog的Maven Anno Mojo擴展(http://wiki.jfrog.org/confluence/display/OSS/Maven+Anno+Mojo)。它允許使用Java註釋代替XDoclet註釋。 – 2012-02-29 11:55:14

+0

好的,我明白了。你需要做什麼來實例化服務器?我的意思是編程。 – 2012-02-29 12:56:22

回答

0

保持服務器實例中pluginContext可在AbtractMojo。請記住,您無法從故障安全測試中訪問它。

另一種方法是以類似的方式將您的插件轉換爲Cargo maven插件的容器,這與我在OSGi框架(https://github.com/TuomasKiviaho/org.codehause.cargo.container.osgi) 。 Cargo項目旨在針對JavaEE容器進行測試,但這對我來說不是問題。

相關問題