在Maven中运行JUnit测试而不构建和复制文件

Ian*_*Ian 30 java maven

我有一个大的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]
Run Code Online (Sandbox Code Playgroud)

它为每个其他模块重复此操作.总而言之,在实际开始测试之前需要一两分钟.有没有人知道如何让测试运行而不必事先打扰所有的编译?如果有任何我应该提供的信息,请告诉我.

Akr*_*kro 63

如果你想要做的只是运行生命周期的测试阶段而不运行所有前面的阶段,你也可以调用绑定到测试阶段的目标:

mvn surefire:test
Run Code Online (Sandbox Code Playgroud)

或者如果你想只运行一次测试

mvn -Dtest=NameOfTest surefire:test
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,“mvn test -DfailIfNoTests=false -Dtest=package.name.TestClass#testMethod -pl subModuleName -am”可以重建模块和模块依赖项。但是 `mvn Surefilre:test -DfailIfNoTests=false -Dtest=package.name.TestClass#testMethod -pl subModuleName -am` 无法解析模块依赖关系 (2认同)