2012-06-05 2 views
8

Мне нужно запустить сервер (реализованный в классе Java) из Maven, но если я использую цель exec: java, он заблокирует maven и не перейдет на следующие этапы, которые подключаются к серверу ,запустить java-сервер от maven

Есть ли способ запустить выполнение exec: java асинхронно, не прерывая выполнение maven?

Спасибо!

+0

Для тех, кто ищет последние решения, попробуйте https://github.com/bazaarvoice/maven-process-plugin –

ответ

5

Вы можете использовать exec-maven-plugin для запуска сценария оболочки, который запустит ваш процесс и отсоединится от него (позволяя процессу работать в фоновом режиме). Что-то вроде этого:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>start-server</id> 
     <phase>pre-integration-test</phase> 
     <goals> 
      <goal>exec</goal> 
     </goals> 
     <configuration> 
      <executable>src/test/scripts/run.sh</executable> 
      <arguments> 
      <argument>{server.home}/bin/server</argument> 
      </arguments> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 

Где run.sh может быть, как это (для U * NIX платформы):

#! /bin/sh 
$* > /dev/null 2>&1 & 
exit 0 

Это должно сделать трюк.

0

Похоже, что вы можете сделать это с помощью antrun плагина:

 <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <version>1.3</version> 
      <configuration> 
       <tasks> 
        <java fork="true" spawn="true" classpathref="maven.runtime.classpath" className="fully.qualified.package.App"/> 
       </tasks> 
      </configuration> 
     </plugin> 
0

Если вы используете этот класс сервера, чтобы выполнить дальнейшие шаги тестирования интеграции в вашем Maven POM, то это на самом деле лучше рассмотреть используя инструмент непрерывной интеграции, такой как Jenkins, он имеет много Plugins, что позволяет запускать собственные классы, запускать и останавливать серверы, развертывать приложения и многие другие возможности, и это бесплатно.

Смежные вопросы