我有一个默认的maven项目:
当我执行“mvn compile”时,maven还尝试编译/ src / test / java下的testClasses。这失败了,因为某些依赖项如JUnit属于“test”-scope。改变例如JUnit“提供”一切正常。
编译时如何避免maven编译testClasses?根据我的理解,我希望maven只在执行“testcompile”时编译这些文件。
我正在使用maven 2.2.1
答案 0 :(得分:0)
只需使用跳过测试的skip maven-surefire-plugin参数以及编译测试。
答案 1 :(得分:0)
我认为这与JUnit的范围无关。通常我们将JUnit的范围设置为test
(而不是provided
),一切都很好。
src/test/java
由Maven Compiler Plugin的testCompile目标编译。但是,您无需明确运行该目标。请查看有关Maven生命周期的主题。例如,如果你运行maven install,它会隐式地经历许多阶段(例如编译,编译测试,生成资源等),并且其中许多都受限于默认的插件目标。
如果您想避免构建测试源,则从Maven Compiler Plugin's usage page开始,如果您通过设置compiler:testCompile
来关闭测试,则会跳过maven.test.skip=true
因此,如果您的单元测试尚未准备好,只需使用Maven构建,并使用-Dmaven.test.skip=true
参数。
只是补充一点,在开发过程中假设“单元测试失败”是正常的,这绝对不是一个好习惯。
答案 2 :(得分:0)
pom.xml错误地定义了“sourceDirectory”。删除它修复了问题
答案 3 :(得分:0)
使用“mvn -B -Dmaven.test.skip = true clean compile”而不是命令“maven clean compile”。此参数跳过测试。