我需要從Maven運行一個服務器(在Java類中實現),但如果使用exec:java目標,它將阻塞maven,並且它不會傳遞到連接到服務器的下一個階段。從maven運行java服務器
有什麼辦法可以在不中斷Maven執行的情況下異步運行exec:java任務嗎?
謝謝!
我需要從Maven運行一個服務器(在Java類中實現),但如果使用exec:java目標,它將阻塞maven,並且它不會傳遞到連接到服務器的下一個階段。從maven運行java服務器
有什麼辦法可以在不中斷Maven執行的情況下異步運行exec:java任務嗎?
謝謝!
你可以使用exec-maven-plugin來運行shell腳本,它可以啓動你的進程,並從進程中分離(讓進程在後臺運行)。事情是這樣的:
<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>
對於尋找最近解決方案的其他人,請嘗試https://github.com/bazaarvoice/maven-process-plugin –