以下是我的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只在第一对“execution”标签之间指定的配置中执行一次。我已经广泛搜索了一个解决方案,我发现的唯一的事情就是不同执行的id需要不同,我已经纠正了。我仍然无法设法运行两次罐子,即使我可以成功运行其中任何一个如果我注释掉另一个的执行。
我还应该提一下,我正在Eclipse中运行该项目,所以我想要做的就是右键单击POM.xml,单击Run-as并选择“Maven test”。
答案 0 :(得分:1)
这不是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>
<a/execution>
</executions>
</plugin>
它将完美地执行两个exec执行,打印两次Java版本。注意:该代码段是您问题的复制和粘贴,只是将java
命令的参数替换为version
选项。
你最想要的是在后台执行这两个命令,或者至少以非阻塞的方式执行这两个命令以便执行第二个命令,然后继续构建(执行我认为的一些测试)。 / p>
检查this SO question如何实现它:不使用exec-maven-plugin
,而是使用maven-antrun-plugin
启动两个selenium命令。
作为进一步说明,您应该考虑使用maven-failsafe-plugin
代替并执行集成测试,将上面的执行附加到pre-integration-test
阶段,并在post-integration-test
阶段按顺序停止它们妥善清理它们。