【发布时间】:2020-05-13 16:18:10
【问题描述】:
到目前为止,在使用 Maven 时,我能够理解 Maven 阶段和目标之间的区别以及不同的 Maven 生命周期。困扰我的是为什么我们使用plugins?
我研究了一个示例,我使用surefire 插件以下列方式执行我的测试:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M4</version>
<executions>
<execution>
<phase>test</phase>
<goals><goal>surefire:test</goal></goals>
</execution>
</executions>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testngChrome.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
我确实了解这里插件的一个用例,它允许我传递我的 testNG.xml 文件以用于执行。
我想了解的是,在运行 POM 时,我们实际上指定了阶段/目标,例如 mvn clean test 或 mvn jar:jar。我知道它们的工作方式有何不同,但我不知道为什么我们有规定在插件下的 POM 中指定阶段和目标。
或者有没有一种方法可以在不提及阶段/目标的情况下运行此 POM,以便它获取插件中提到的阶段/目标?
如果有一个现有的答案可以帮助我理解这一点,请随时指导我。
【问题讨论】:
-
首先首先默认情况下,所有东西都可以在没有补充配置的情况下开箱即用,这包括使用TestNG;不需要提供套件文件等,除了这些测试是集成测试,应该使用 maven-failsafe-plugin 来运行。此外,从命令行运行意味着简单:
mvn package或mvn clean package,如果您想进行集成测试,mvn clean verify但不需要手动调用目标...仅支持命令行执行的插件目标需要(例外)...
标签: maven maven-3 maven-surefire-plugin