我使用spring 4.x版本制作自定义依赖项,并将其包含在使用spring 3.x版本的项目中。当调用来自此依赖项的方法时,它使用spring 3.x版本的类而不是4.x.是否可以强制此依赖项使用spring 4.x,而项目本身将使用spring 3.x?
答案 0 :(得分:0)
我认为这是不可能的,因为当最终项目运行时,依赖关系是根据组ID和工件ID解决的,而不是基于它们的版本。这就是为什么你的应用程序使用3.x依赖,因为它覆盖了父项目中提到的那个。希望这会有所帮助。
答案 1 :(得分:0)
是的,如果您将申请分开(您可能不愿意),则可以。另一种方法:您可能会考虑在同一JVM中使用另一个类加载器。然而,这可能导致更大的问题,特别是使用Spring。
Stream.CopyTo关于从具有不同版本的lib加载相同的类。
答案 2 :(得分:0)
正如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>