我需要从 Maven 运行服务器(在 Java 类中实现),但是如果我使用 exec:java 目标,它将阻止 maven,并且不会传递到连接到服务器的下一个阶段。
有什么方法可以异步运行 exec:java 任务,而不会中断 maven 执行?
谢谢!
我需要从 Maven 运行服务器(在 Java 类中实现),但是如果我使用 exec:java 目标,它将阻止 maven,并且不会传递到连接到服务器的下一个阶段。
有什么方法可以异步运行 exec:java 任务,而不会中断 maven 执行?
谢谢!
您可以使用 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
这应该够了吧。
It looks like you can do this with the antrun plugin:
<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>