如何告诉maven不要带来测试依赖

时间:2015-10-22 06:56:30

标签: maven

我有范围测试的Maven依赖项。 我添加了标志Dmaven.test.skip=true,但Maven仍然带来了测试依赖性。 如果我只想构建生产部件,有没有办法不带来测试依赖?

3 个答案:

答案 0 :(得分:1)

标志-Dmaven.test.skip只会跳过您运行的项目中的测试编译和执行。

使用-DskipTests通常更好,因为这将编译测试类但不运行它们。请参阅surefire文档。

这与依赖关系无关。根据它们的范围和插件需要,它们被加载到类路径中。 surefire插件在运行单元测试时需要解析范围测试。

如果存在您不想使用的范围测试的依赖关系,则需要删除它们,或者如果它们通过传递依赖关系(依赖关系的依赖关系)进入它们,则需要将它们排除。您可以执行mvn dependency:tree来找出jar在项目中的原因。

答案 1 :(得分:1)

这就是maven的工作原理 - 它首先尝试检查ako依赖项是否可用,无论它们的范围如何。只有这样,它才会继续测试阶段,以确定不应该执行测试。

可能的解决方法是在单独的测试maven配置文件中定义测试依赖项,当您不想运行测试时,不应用该配置文件。在下载任何依赖项之前解析配置文件,因此如果配置文件未将测试依赖项添加到有效pom,则根本不会下载它们。

答案 2 :(得分:1)

如果为测试范围添加了一些依赖项,则maven首先会检查依赖项是否可用,然后会检查范围。

您可以创建Maven概要文件,在概要文件下添加测试依赖项,并在不存在-Dmaven.test.skip-Dmaven.test.skip=true选项时触发概要文件。这样,您可以使构建命令保持不变。

您可以检查这个简单的项目manage-test-dependencies-in-maven-the-proper-way,以更好地理解它。