gpt4 book ai didi

maven - 使用 Maven exec 插件启动 Windows 批处理脚本会阻止构建,即使该脚本使用 "start"

转载 作者:行者123 更新时间:2023-12-03 11:55:29 24 4
gpt4 key购买 nike

我正在尝试在自定义容器的顶部执行我的应用程序部署的集成测试。由于我的容器是自定义的,我不能使用 Maven Cargo 插件来设置容器。

我的容器:

  • 必须通过适当的 bat 文件启动,该文件位于运行测试的机器的路径中。
  • 可以手动关闭,因为我有一个包含所有集成测试的 maven 模块,即使有一天我想知道如何在测试完成后关闭进程。

  • 我的问题是我必须在不同的进程中运行我的容器,因为它需要在执行测试时继续运行。此外,我的测试中有一个 API,可以让我等待容器准备好(一种超时查找)。

    我已将以下几行添加到我的 pom.xml
            <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.1</version>
    <executions>
    <execution>
    <phase>pre-integration-test</phase>
    <goals>
    <goal>exec</goal>
    </goals>
    </execution>
    </executions>
    <configuration>
    <executable>scripts/start-agent.bat</executable>
    </configuration>
    </plugin>

    这将调用一个脚本,其中仅包含

    start call gs-agent.bat



    但是 mvn exec 插件被卡住了,我的测试没有运行。根据 How do I run a batch file from my Java Application? 中的建议,我修改了我的 pom.xml 如下:
     <configuration>
    <executable>cmd</executable>
    <arguments>
    <argument>/C</argument>
    <argument>start</argument>
    <argument>gs-agent.bat</argument>
    </arguments>
    </configuration>

    但这似乎并不能解决问题:

    Maven halted

    最佳答案

    exec 插件无法做到这一点,我也发现了它的问题:http://jira.codehaus.org/browse/MEXEC-87 (链接现在由于 codehaus 减速而失效,可以从 web archive 找到)
    在上面链接的 jira 问题中,有提及和 a link of a fork for exec plugin that would have the functionality .
    除此之外,我认为您暂时需要使用 antrun-plugin。
    这是一个取自工作配置并使用 mvn verify 运行的示例.这需要在 <plugins> 中,而不是 <pluginManagement> (exec 可以驻留在插件管理中就好了)。

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.6</version>
    <executions>
    <execution>
    <phase>pre-integration-test</phase>
    <configuration>
    <target>
    <exec executable="cmd.exe"
    spawn="true">
    <arg value="/c"/>
    <arg value="D:\myfolder\test.bat"/>
    </exec>
    </target>
    </configuration>
    <goals>
    <goal>run</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
    请注意 spawn="true"如果您不希望执行被阻止,就像问题中指定的那样,这里是关键。如果您确实希望它阻止并立即查看输出,请将其设置为 false。

    关于maven - 使用 Maven exec 插件启动 Windows 批处理脚本会阻止构建,即使该脚本使用 "start",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12597879/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com