java在Maven中运行JUnit测试,无需构建和复制文件
我有一个大型Maven项目,其中有几个模块。当我想从一个模块运行JUnit测试时,我会在包含所有模块的目录中运行“mvn-Dtest=NameOfTest test”。当我运行这个命令时,Maven遍历每个模块并尝试编译它(尽管它已经编译),这涉及到复制一堆文件并增加测试的总时间。Maven surefire插件的“test”命令似乎执行了测试的所有步骤。我想知道是否有一种方法可以只执行测试步骤,而不用担心所有试图编译和复制的文件
以下是测试开始前的一些输出:
[INFO]
[INFO] --- build-helper-maven-plugin:1.5:add-test-source (add-test-source) @ module1 ---
[INFO] Test Source directory: <directory in module1 with some generated sources> added.
[INFO]
[INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ module1 ---
[debug] execute contextualize
[INFO] Copying 108 resources
[INFO] Copying 1113 resources
[INFO] Copying 1 resource
[INFO]
它会对其他每个模块重复此操作。总的来说,它需要一两分钟才能真正开始测试。有没有人知道一种不用预先编译就能运行测试的方法?请让我知道,如果有任何更多的信息,我应该提供
# 1 楼答案
如果您希望只运行生命周期的测试阶段,而不运行之前的所有阶段,那么您也可以将绑定到测试阶段的目标称为:
或者如果你只想运行一个测试
# 2 楼答案
简单地从测试所在的模块中运行测试有什么问题?这样,Maven就不会尝试构建您不感兴趣的其他模块
# 3 楼答案
如果您只想跳过cmd行中的测试编译,请使用
-Dmaven.test.skip=true
我还应该指出,虽然
maven.test.skip
不会编译任何测试,但它会执行进入<testOutputDirectory>
的任何编译测试根据maven resources插件中^{} 的文档,应该使用上面的
maven.test.skip
参数跳过测试资源的复制