Mavenからサーバー(Javaクラスで実装)を実行する必要がありますが、exec:javaゴールを使用すると、Mavenがブロックされ、サーバーに接続する次のフェーズに渡されません。
Mavenの実行を中断せずにexec:javaタスクを非同期で実行する方法はありますか?
ありがとう!
Mavenからサーバー(Javaクラスで実装)を実行する必要がありますが、exec:javaゴールを使用すると、Mavenがブロックされ、サーバーに接続する次のフェーズに渡されません。
Mavenの実行を中断せずにexec:javaタスクを非同期で実行する方法はありますか?
ありがとう!
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
それでうまくいくはずです。
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>