我有使用maven构建的Java项目,该项目具有一些依赖性。这样的依赖项之一是另一个项目(我想到了Eclipse工作区),并且仅在test范围内。
<dependency>
<groupId>my.group.id</groupId>
<artifactId>artifactid</artifactId>
<version>1.0</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我在项目根目录下使用以下命令构建项目
mvn clean package -Dmaven.test.skip=true
Run Code Online (Sandbox Code Playgroud)
我期望发生的事情是,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] -----------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
因此,尽管跳过了测试,甚至编译了它们(mvn clean compile运行良好),但maven还是尝试解决测试依赖性。
跳过测试执行时,如何从构建计划依赖关系解决步骤中排除测试依赖关系?
简而言之:你不能。至少不容易。maven.test.skip不会阻止 surefire:test mojo 运行,它只会将插件配置为什么都不做。(编译:测试编译相同)。
两个 mojo 都需要作用域测试的依赖解析(mojo 定义的一部分)。
因此,防止这些依赖项被解析的唯一选择是:
但是,这两个选项都相当脏。
因此,您最好的选择是首先安装您的依赖工件(使用mvn install),然后简单地接受 maven 解析依赖项的方式。
| 归档时间: |
|
| 查看次数: |
1083 次 |
| 最近记录: |