Maven - 强制使用依赖
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven - 强制使用依赖相关的知识,希望对你有一定的参考价值。
我使用spring 4.x版本制作自定义依赖项,并将其包含在使用spring 3.x版本的项目中。当调用来自此依赖项的方法时,它使用spring 3.x版本的类而不是4.x.是否有可能强制使用spring 4.x而项目本身将使用spring 3.x?
答案
我认为这是不可能的,因为当最终项目运行时,依赖关系是根据组ID和工件ID而不是它们的版本来解决的。这就是为什么你的应用程序使用3.x依赖,因为它覆盖了父项目中提到的那个。希望这可以帮助。
另一答案
是的,如果您将应用程序(您可能不想要)分开,则可以。另一种方法:您可能会考虑在同一JVM中使用另一个类加载器。然而,这可能导致更大的问题,特别是使用Spring。
Dzone article关于从不同版本的libs加载相同的类。
另一答案
正如pvpkiran所说,您希望从自定义工件中排除spring v3传递依赖项。从maven文档 - Optional Dependencies and Dependency Exclusions:
<project>
...
<dependencies>
<dependency>
<groupId>sample.ProjectA</groupId>
<artifactId>Project-A</artifactId>
<version>1.0</version>
<scope>compile</scope>
<exclusions>
<exclusion> <!-- declare the exclusion here -->
<groupId>sample.ProjectB</groupId>
<artifactId>Project-B</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
</project>
以上是关于Maven - 强制使用依赖的主要内容,如果未能解决你的问题,请参考以下文章
maven常用的lifecycle,clean/install/deploy,maven打包jar包,maven打包强制拉取最新依赖