Maven - 强制使用依赖

时间:2018-03-02 09:09:32

标签: spring maven dependencies

我使用spring 4.x版本制作自定义依赖项,并将其包含在使用spring 3.x版本的项目中。当调用来自此依赖项的方法时,它使用spring 3.x版本的类而不是4.x.是否可以强制此依赖项使用spring 4.x,而项目本身将使用spring 3.x?

3 个答案:

答案 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>