1

我有一个默认的 Maven 项目:

  • /src/main/java
  • /src/test/java(包括 *Test.java)。

当我执行“mvn compile”时,maven 也会尝试编译 /src/test/java 下的 testClasses。这失败了,因为某些依赖项(例如 JUnit)在“测试”范围内。将例如 JUnit 的范围更改为“提供”一切正常。

编译时如何避免maven编译testClasses?据我了解,我希望 Maven 仅在执行“testcompile”时编译这些文件。

我正在使用 Maven 2.2.1

4

4 回答 4

1

我相信这与 JUnit 的范围无关。通常我们将 JUnit 的范围设置为test(而不是provided),一切都很好。

src/test/java由 Maven Compiler Plugin 的 testCompile 目标编译。但是,您不需要显式运行该目标。请查看有关 Maven 生命周期的主题。例如,如果您运行 maven install,它会隐含地经历许多阶段(例如编译、编译测试、生成资源等),其中许多都与默认插件目标有关。

如果你想避免构建测试源,从 Maven编译器插件的使用页面compiler:testCompile如果你通过设置关闭测试将被跳过maven.test.skip=true

所以,如果你的单元测试还没有准备好,只需使用 Maven 构建,带-Dmaven.test.skip=true参数。

补充一点,在开发过程中假设“单元测试失败”是正常的,这绝对不是一个好习惯。

于 2012-10-22T10:22:46.890 回答
0

只需对maven-surefire-plugin使用skip参数即可跳过测试以及编译测试。

于 2012-10-22T10:21:32.193 回答
0

pom.xml 错误地定义了“sourceDirectory”。删除它解决了问题

于 2012-10-22T13:26:09.880 回答
0

代替命令“maven clean compile”,使用“mvn -B -Dmaven.test.skip=true clean compile”。此参数跳过测试。

于 2012-10-22T13:49:39.710 回答