Как поделиться экземпляром одного и того же экземпляра в нескольких плагинов Maven Mojos? - PullRequest
0 голосов
/ 29 февраля 2012

Я использую плагин Maven, который запускает и останавливает сервер базы данных в памяти.У меня есть два моджо ServerStart и ServerStopServerStop я создаю экземпляр сервера базы данных и запускаю его, вызывая server.start()ServerStop Mojo я хотел бы получить тот же экземпляр сервера для вызова server.stop().Могу ли я как-то создать экземпляр Сервера, а затем вставить его в мой 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();
    }

}

Ответы [ 2 ]

1 голос
/ 06 июня 2012

вы можете определить серверную ссылку на это

/**
 * @parameter
 * */
private Server server;

и настроить ее в pom, где вы указали плагин

как:

<configuration>
<server>
 <serverField1>value1</serverField1>
 <serverField2>value2</serverField2>
 ...
</server>
</configuration>

см. Здесь: http://maven.apache.org/guides/plugin/guide-java-plugin-development.html

0 голосов
/ 08 марта 2012

Сохраните экземпляр сервера в pluginContext, доступном на AbtractMojo.Просто помните, что вы не можете получить к нему доступ из тестов безопасности.

Другим подходом было бы преобразовать ваш плагин в форму контейнера для плагина Cargo maven аналогично тому, как я это делал с каркасом OSGi (https://github.com/TuomasKiviaho/org.codehause.cargo.container.osgi). Проект Cargo предназначен для тестирования на контейнерах JavaEE, но это не былопроблема для меня.

...