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--强制使用远程仓库的新依赖

强制 Maven 在项目目录中获取依赖项

maven常用的lifecycle,clean/install/deploy,maven打包jar包,maven打包强制拉取最新依赖

强制 Intellij IDEA 重新读取所有 maven 依赖项

maven缺少依赖包,强制更新命令

如何通过父pom中的dependencyManagement强制maven依赖版本?