我们可以在 maven-surefire-plugin 之前执行 exec-maven-plugin 吗?
Can we execute exec-maven-plugin before maven-surefire-plugin?
是否有可能在 maven-surefire-plugin 之前 运行 exec-maven-plugin,我在 运行 期间观察到 maven-surefire-plugin 正在执行,即使顺序在标签是第二个。我的方案是执行 JAVA CLASS (使用 exec-maven-plugin )生成我的 testng.xml 并且可以 运行 使用(maven-surefire-plugin)。
首先,如果 exec-maven-plugin
的执行绑定到 test
阶段,则此执行在 maven-surefire-plugin
之后执行是正常的。原因是您可能正在处理将 jar
、which has a default binding of the Surefire Plugin 打包到 test
阶段的项目。这个默认执行始终是第一个被调用的,无论插件在 POM 中的何处声明。在日志中,您会发现此执行的 ID 为 default-test
.
有一种方法可以利用 the phases invoked before the phase test
在测试 运行 之前执行操作。在您的情况下,您的目标是生成测试资源 testng.xml
,因此使用 generate-test-resources
阶段是合适的,其目的是创建测试所需的资源。因此,您只需指定
<phase>generate-test-resources</phase>
执行 exec-maven-plugin
生成 testng.xml
。
然后,您可以将生成的 testng.xml
与 suiteXmlFiles
element, see Using Suite XML Files
我是这样实现的:
我添加了测试 script/java main class,我想在 Cucumber 测试套件之前执行,在以下文件夹中:
enter image description here
在 POM.xml 中添加了以下...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/test/java/BeforeSuite</source> <!-- source folder where Before Suite scripts are saved -->
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>before-test-suite-scripts</id>
<phase>generate-test-resources</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>BeforeSuite.HelloBeforeSuiteScript</mainClass> <!-- <packagename>.<className> -->
</configuration>
</execution>
</executions>
</plugin>
当 运行 宁 mvn clean verify
时,测试套件脚本将在 运行 之前执行测试套件。
enter image description here
是否有可能在 maven-surefire-plugin 之前 运行 exec-maven-plugin,我在 运行 期间观察到 maven-surefire-plugin 正在执行,即使顺序在标签是第二个。我的方案是执行 JAVA CLASS (使用 exec-maven-plugin )生成我的 testng.xml 并且可以 运行 使用(maven-surefire-plugin)。
首先,如果 exec-maven-plugin
的执行绑定到 test
阶段,则此执行在 maven-surefire-plugin
之后执行是正常的。原因是您可能正在处理将 jar
、which has a default binding of the Surefire Plugin 打包到 test
阶段的项目。这个默认执行始终是第一个被调用的,无论插件在 POM 中的何处声明。在日志中,您会发现此执行的 ID 为 default-test
.
有一种方法可以利用 the phases invoked before the phase test
在测试 运行 之前执行操作。在您的情况下,您的目标是生成测试资源 testng.xml
,因此使用 generate-test-resources
阶段是合适的,其目的是创建测试所需的资源。因此,您只需指定
<phase>generate-test-resources</phase>
执行 exec-maven-plugin
生成 testng.xml
。
然后,您可以将生成的 testng.xml
与 suiteXmlFiles
element, see Using Suite XML Files
我是这样实现的:
我添加了测试 script/java main class,我想在 Cucumber 测试套件之前执行,在以下文件夹中: enter image description here
在 POM.xml 中添加了以下...
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<phase>process-resources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>src/test/java/BeforeSuite</source> <!-- source folder where Before Suite scripts are saved -->
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>before-test-suite-scripts</id>
<phase>generate-test-resources</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>BeforeSuite.HelloBeforeSuiteScript</mainClass> <!-- <packagename>.<className> -->
</configuration>
</execution>
</executions>
</plugin>
当 运行 宁 mvn clean verify
时,测试套件脚本将在 运行 之前执行测试套件。
enter image description here