【发布时间】:2015-09-16 09:08:28
【问题描述】:
我有一个环境,我需要安装多个 JDK 来编译不同的项目。但是,aspectj-maven-plugin 声明了对 com.sun:tools 的依赖,其中版本设置为 jre 版本,systemPath 设置为 JAVA_HOME。
当然,除非 JAVA_HOME 的 JDK 是给定项目的预期 JDK,否则这是错误的。
以前,我们自己的代码需要 tools.jar 时遇到了一些问题,因此我通过在我们的 Nexus 实例中安装 tools.jar 并为我们的 pom 文件添加适当的依赖项来解决问题。
我想做的是强制 aspectj-maven-plugin 在我们的 Nexus 实例中使用 tools.jar,就像我们自己的代码现在所做的那样,而不是使用系统范围依赖项。
我尝试通过对 com.sun:tools 依赖项的嵌套排除来添加对插件的依赖项,但它似乎不起作用。
我还尝试通过包含对 com.sun:tools:1.8 的依赖项来覆盖插件的依赖项,该依赖项可以在我们的 Nexus 中找到,但由于某种原因,它只尝试从 Maven Central 下载它而忽略了我们的 Nexus实例。
我觉得我很接近,但我错过了让它发挥作用的精确咒语。
有什么想法吗?
【问题讨论】:
-
当您覆盖插件依赖项时,您是否明确设置覆盖范围?
-
我想是的。我试过编译。我相信,我也尝试过没有范围。编辑:将范围设置为运行时似乎也失败了,因为它仍在 Maven Central 而不是 Nexus 上查找 tools.jar。
-
覆盖
标记内的依赖项听起来是个好方法。当然,仅将 com.sun:tools 添加到 标记将无济于事。您可以尝试在 部分而不是常规的 部分中进行覆盖。 -
为什么不将它添加到依赖项中?
-
用于您项目的直接依赖项。如果要覆盖 的依赖项,请在 标记内进行。我举个例子。