我有使用 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(使用前将#替换为@)