我正在和Maven一起运行一个测试。
这就是以以下两种方式运行它的区别:
mvn -Dtest=DatabaseTest test
mvn -Dtest=DatabaseTest surefire:test
我可以看到测试显示:
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ rac.mybatis ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 2 resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ rac.mybatis ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ rac.mybatis ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/etomort/smip/oracle-rac/mybatis-rac/src/test/resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ rac.mybatis ---
[INFO] Nothing to compile - all classes are up to date
[INFO]
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ rac.mybatis ---
[INFO] Surefire report directory: /home/etomort/smip/oracle-rac/mybatis-rac/target/surefire-reports
而照管:测试显示:
[INFO] --- maven-surefire-plugin:2.12.4:test (default-cli) @ rac.mybatis ---
[INFO] Surefire report directory: /home/etomort/smip/oracle-rac/mybatis-rac/target/surefire-reports
这个问题有非常有价值的解释,尽管当前的解释指出了一个典型的疑问,它是一个非常具体的用例。@Shadow提供的答案澄清了这一点。Maven -生命周期-vs-阶段-vs-插件-vs-目标问题可以参考,以拓宽和深入了解Maven的工作方式。
发布于 2018-04-19 11:24:45
不同的是,test
运行完整的构建到执行测试的点,而surefire:test
只执行测试,重用以前构建的中间结果。
因此,如果您编辑测试并且只运行surefire:test
,那么测试的新版本将不会被编译,因此Maven将执行一些旧版本的测试。一般来说,很难说哪个版本的测试会以这种方式执行,所以这就是为什么人们通常使用mvn clean test
而不是mvn surefire:test
。
发布于 2018-04-16 09:52:10
test
是一个生命周期阶段,因为Maven是基于约定的,这意味着在默认情况下,每个阶段都有特定的插件已装订。
您还可以将自己的插件添加到某个阶段,但也可以手动调用插件mvn plugin:goal
的目标。
当然是官方的测试插件,绑定到测试阶段。
https://stackoverflow.com/questions/49854054
复制相似问题