9

Mavenからサーバー(Javaクラスで実装)を実行する必要がありますが、exec:javaゴールを使用すると、Mavenがブロックされ、サーバーに接続する次のフェーズに渡されません。

Mavenの実行を中断せずにexec:javaタスクを非同期で実行する方法はありますか?

ありがとう!

4

3 に答える 3

6

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

それでうまくいくはずです。

于 2012-06-05T14:25:51.357 に答える
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>
于 2012-06-05T18:31:46.167 に答える
0

Maven POMでさらに統合テスト手順を実行するためにこのサーバークラスを実行している場合は、 Jenkinsなどの継続的インテグレーションツールの使用を検討することをお勧めします。独自のクラスを実行できるプラグインが多数あります。 、サーバーの起動と停止、アプリケーションのデプロイ、その他多くの可能性があり、無料です。

于 2016-08-22T11:58:14.943 に答える