在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:  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] 

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

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

 mvn surefire:test 

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

 mvn -Dtest=NameOfTest surefire:test 

如果您只想跳过cmd行的测试编译,请使用-Dmaven.test.skip=true

我还应该指出,虽然maven.test.skip 不会编译任何测试,但它会执行任何已经进入编译测试。

根据maven-resources-plugin中的skip文档,应该使用上面的maven.test.skip arg跳过测试资源的复制。

将其设置为“true”以绕过测试资源的复制。 它的使用不推荐,但偶尔也很方便。 用户属性是:maven.test.skip。

从测试所在的模块中简单地运行测试有什么问题? 这样,Maven就不会尝试构建您不感兴趣的其他模块。