如何从构建中排除 {test} 范围的依赖项?

2024-05-07

我有使用 Maven 构建的 Java 项目,它有一些依赖项。其中一个依赖项是另一个项目(我想到的是 Eclipse 工作区),并且它仅位于test scope.

    <dependency>
        <groupId>my.group.id</groupId>
        <artifactId>artifactid</artifactId>
        <version>1.0</version>
        <scope>test</scope>
    </dependency>

我在项目根目录中使用以下命令构建我的项目

mvn clean package -Dmaven.test.skip=true

我期望发生的事情是 Maven 会构建项目,留下测试依赖项。然而,抛出了未解决的依赖异常(未解决我的test范围依赖)。当我运行构建命令时-X选项,我在我的项目构建计划中发现了以下报告:

[DEBUG] Dependencies (collect): []
[DEBUG] Dependencies (resolve): [compile, runtime, test]
[DEBUG] Repositories (dependencies): [central (http://repo.maven.apache.org/maven2, releases)]
[DEBUG] Repositories (plugins)     : [central (http://repo.maven.apache.org/maven2, releases)]
[DEBUG] -----------------------------------------------------------------------

因此,尽管跳过测试甚至编译它们(mvn clean compile运行良好)maven 尝试解决测试依赖关系。

跳过测试执行时,如何从构建计划依赖关系解析步骤中排除测试依赖关系?


简而言之:你不能。至少不容易。maven.test.skip不会阻止 Surefire:test mojo 运行,它只是将插件配置为不执行任何操作。 (与编译:testcompile 相同)。

两个 mojo 都需要范围测试的依赖关系解析(mojo 定义的一部分)。

因此,阻止解决这些依赖关系的唯一选择是:

  • 使用配置文件并将 compiler:testCompile 和 Surefire:test 重新绑定到非现有阶段
  • 将所有测试依赖项放在单独的配置文件中

然而,这两种选择都相当肮脏。

所以你最好的选择是首先安装你的依赖工件(使用mvn install)并简单地接受maven解决依赖关系的方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从构建中排除 {test} 范围的依赖项? 的相关文章

随机推荐