Maven 和 Exec : forking a process?

标签 maven exec

我正在尝试使用 Maven 在应用程序上运行一些集成测试之前启动它。我在 Windows 上。我的 Maven 插件配置如下所示:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.1</version>
    <executions>
        <execution>
            <id>start-my-application</id>
            <phase>pre-integration-test</phase>
            <goals>
                <goal>exec</goal>
            </goals>
            <configuration>
                <executable>start_application.bat</executable>
                <workingDirectory>./path/to/application</workingDirectory>
            </configuration>
        </execution>
    <executions>
<plugin>

我的批处理文件如下所示:
start myApplication.exe

单独运行时,批处理文件会生成一个单独的窗口来运行应用程序并立即返回控制权。

但是,当从 Maven 运行时,构建会等待单独窗口中的进程完成,然后再继续。这在某种程度上违背了集成测试阶段的要点......

我有什么想法可以在 Maven 中启动一个真正独立的过程,以允许构建与它一起继续吗?

最佳答案

为了记录,一个相当黑客的解决方案是使用 maven-antrun-plugin调用 Ant,它能够产生单独的进程:

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
        <execution>
            <phase>pre-integration-test</phase>
            <configuration>
                <target>
                    <exec executable="cmd"
                          dir="./path/to/application"
                          spawn="true">
                        <arg value="/c"/>
                        <arg value="start_application.bat"/>
                    </exec>
                </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
       </execution>
   </executions>
</plugin>

关于Maven 和 Exec : forking a process?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4668839/

相关文章:

maven - 是否自动使用dependency-reduced-pom.xml而不是pom.xml?

java - Maven Jar文件读取外部镜像

java - Eclipse + Maven -> eclipse.ini

process - 为什么 sudo 调用 fork() 和 exec() 而不仅仅是 exec()?

c - C 中的这种多管道代码有意义吗?

java - 存储可通过 php 调用的 java 可执行文件

maven-2 - Maven Java EE 和模块项目 pom

java - 声明 maven 对 tools.jar 的依赖以在 JDK 9 上工作

exec - 如何从 Kotlin 代码中调用外部命令?

java - 运行时执行不显示结果