2012-06-05 3 views
8

Maven에서 서버 (Java 클래스로 구현 됨)를 실행해야하지만 exec : java 목표를 사용하면 Maven을 차단하고 서버에 연결되는 다음 단계로 넘어 가지 않습니다 .Maven에서 Java 서버 실행

maven 실행을 중단하지 않고 exec : java 작업을 비동기 적으로 실행할 수있는 방법이 있습니까?

감사합니다.

+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 * 괜찬아 플랫폼)과 같이 될 수있다 : 트릭을 할해야

#! /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

메이븐 POM에 더 통합 테스트 단계를 실행하기 위해이 서버 클래스를 실행하는 경우, 다음을 고려하는 것이 실제로 더 나은 Jenkins과 같은 지속적인 통합 도구를 사용하면 많은 수의 Plugins을 사용하여 자신 만의 클래스를 실행하고, 서버를 시작 및 중지하고, 응용 프로그램을 배포하고, 많은 다른 가능성을 제공 할 수 있습니다.