gpt4 book ai didi

java - 如何在构建中多次运行 maven exec 插件

转载 作者:行者123 更新时间:2023-11-30 07:22:29 25 4
gpt4 key购买 nike

下面是我的 POM 的相关部分 -

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>StartHub</id>
<phase>test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<arguments>
<argument>-jar</argument>
<argument>${basedir}/src/lib/Hub/selenium-server-standalone-2.53.0.jar</argument>
<argument>-role</argument>
<argument>hub</argument>
<argument>-throwOnCapabilityNotPresent</argument>
<argument>false</argument>
<argument>-newSessionWaitTimeout</argument>
<argument>20000</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>StartNode</id>
<phase>test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<arguments>
<argument>-jar</argument>
<argument>${basedir}/src/lib/Node/selenium-server-standalone-2.53.0.jar</argument>
<argument>-hub</argument>
<argument>http://127.0.0.1:4444/register/grid</argument>
<argument>-port</argument>
<argument>5555</argument>
<argument>
Dwebdriver.chrome.driver=${basedir}/chromedriver.exe</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>

我试图使用 exec 插件在两种配置(集线器和节点)中执行 jar(selenium 独立服务器)。

我的问题是,该 jar 在第一对“执行”标记之间指定的配置中仅执行一次。我广泛搜索了解决方案,唯一发现的是不同执行的 id 需要不同,我对此进行了纠正。我似乎仍然无法设法运行这些 jar 两次,即使如果我注释掉另一个 jar 的执行,我可以成功运行其中任何一个 jar 。

我还应该提到,我正在 Eclipse 中运行该项目,因此理想情况下我想要做的是右键单击 POM.xml,单击 Run-as 并选择“Maven test”。

最佳答案

这不是 Maven 执行问题,而是与您正在执行的内容相关的问题:阻塞进程(第一个服务器)将停止构建监听永远不会连接的节点(因为它的执行不会开始)。

将您的 pom 更改为以下内容:

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.5.0</version>
<executions>
<execution>
<id>StartHub</id>
<phase>test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<arguments>
<argument>-version</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>StartNode</id>
<phase>test</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>java</executable>
<arguments>
<argument>-version</argument>
</arguments>
</configuration>
</execution>
</executions>
</plugin>

它将完美执行两次 exec 执行,打印两倍的 Java 版本。注意:该代码片段是您问题的复制和粘贴,只需将 java 命令的参数替换为其 version 选项。

<小时/>

您最可能寻找的是在后台或至少以非阻塞方式执行这两个命令,以便执行第二个命令,然后继续构建(以执行我认为的一些测试)。

检查this SO question如何实现它:不要使用 exec-maven-plugin,而是使用 maven-antrun-plugin 来启动两个 selenium 命令。

<小时/>

进一步说明,您可能应该考虑使用 maven-failsafe-plugin相反,执行集成测试,将上述执行附加到 pre-integration-test 阶段,并在 post-integration-test 阶段停止它们,以便正确清理它们。

关于java - 如何在构建中多次运行 maven exec 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37319793/

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