【发布时间】:2019-04-27 19:42:04
【问题描述】:
我有一个plugin project,它作为依赖项添加到其他container projects。
现在,这个插件项目使用了许多常见的依赖项,例如 spring-security、commons-lang 等。
通常,容器项目包含它们自己版本的此类频繁依赖项。因此,当我们添加插件依赖项时,会出现冲突,并且依赖项会根据常规的 maven dependency resolver 以及插件项目依赖项中提供的 scopes 和 optional 标签来解决。
有没有一种方法可以首先使用父依赖项中的版本解决所有依赖项,如果它们不可用,则使用插件依赖项中指定的版本。
注意:可选和作用域运行时存在一个问题,即这些依赖项是由容器提供的,因此无法提供轻松的单一依赖项来添加插件依赖项。
【问题讨论】:
-
据我了解,您构建了一次插件并将其添加到容器项目中?那么容器项目(poms)是插件特定的吗?还是反过来,你为每个容器使用自己的 pom 构建插件?
-
构建一次插件并将其添加到容器项目中
-
为什么范围:提供的不适用于您。如果您需要针对特定模块的其他工件,则无论如何都需要调整每个容器。使用插件项目中提供的范围,您可以添加必要的内容,如有必要,并在必要的版本中。
-
现在我正在使用范围提供。这种方法的问题是容器/项目必须在他们的项目中明确提供这些(在我的情况下大约 20 个)jar。
-
您是否已经在使用
来定义版本?在这种情况下,至少您可以覆盖容器项目与容器共享的组件的版本。
标签: java maven dependencies dependency-management