在您自己的Maven依赖中处理其他依赖

在您自己的Maven依赖中处理其他依赖,maven,dependencies,maven-3,dependency-management,Maven,Dependencies,Maven 3,Dependency Management,我希望在将来的项目中重用和集中我为SpringRESTAPI创建的UTIL。这就是为什么我认为我应该将它们外包给我自己的项目,并将它们作为Maven依赖项提供 这些Util文件(例如基本服务、基本控制器)还包含Spring注释,即我的Util依赖项中需要一些Spring依赖项。现在我有点不确定我是否犯了错误 首先,我不确定是否应该在实用程序依赖项中使用spring依赖项,或者尝试删除所有内容。否则,我将不得不指定一个spring版本,但它可能不同于我希望稍后在项目中使用的版本。我该如何解决这个问

我希望在将来的项目中重用和集中我为SpringRESTAPI创建的UTIL。这就是为什么我认为我应该将它们外包给我自己的项目,并将它们作为Maven依赖项提供

这些Util文件(例如基本服务、基本控制器)还包含Spring注释,即我的Util依赖项中需要一些Spring依赖项。现在我有点不确定我是否犯了错误


首先,我不确定是否应该在实用程序依赖项中使用spring依赖项,或者尝试删除所有内容。否则,我将不得不指定一个spring版本,但它可能不同于我希望稍后在项目中使用的版本。我该如何解决这个问题呢?

对于依赖项,拥有依赖项是完全合理的(这些被称为传递依赖项)。当然,你应该尽可能地保持低的数字,但另一方面,你不想重新发明轮子

当有人使用您的依赖项时,他们会自动在spring上绘制可传递的依赖项。现在,可能会出现以下几种情况:

  • 如果这是对spring的唯一引用,那么该版本将按照您所说的那样使用
  • 如果在另一点上,给出了不同版本的spring,Maven依赖项中介就会起作用。它根据“最接近就是最好”的规则决定采用哪个版本
  • 但是:您始终可以在
    中设置spring版本,然后覆盖所有可传递的给定版本号

    • 对依赖项具有依赖项是完全合理的(这些依赖项称为传递依赖项)。当然,你应该尽可能地保持低的数字,但另一方面,你不想重新发明轮子

      当有人使用您的依赖项时,他们会自动在spring上绘制可传递的依赖项。现在,可能会出现以下几种情况:

      • 如果这是对spring的唯一引用,那么该版本将按照您所说的那样使用
      • 如果在另一点上,给出了不同版本的spring,Maven依赖项中介就会起作用。它根据“最接近就是最好”的规则决定采用哪个版本
      • 但是:您始终可以在
        中设置spring版本,然后覆盖所有可传递的给定版本号

      • 这是Maven的主要概念。您的实用程序模块必须与Spring依赖项一起提供。它被称为
        可传递依赖项
        。 试着想象一下当所有依赖项都被排除在外时的情况。在这种情况下,没有人会知道需要哪种类型和哪种版本的Spring依赖项

        Maven有一个非常好的依赖冲突解决方案。这是基于最近的最新原理。因此,您可以轻松覆盖这些Spring版本,并且您的应用程序将只使用其中一个

        看看这些:
        [1]

        [2] 这是Maven的主要概念。您的实用程序模块必须与Spring依赖项一起提供。它被称为
        可传递依赖项
        。 试着想象一下当所有依赖项都被排除在外时的情况。在这种情况下,没有人会知道需要哪种类型和哪种版本的Spring依赖项

        Maven有一个非常好的依赖冲突解决方案。这是基于最近的最新原理。因此,您可以轻松覆盖这些Spring版本,并且您的应用程序将只使用其中一个

        看看这些:
        [1]

        [2]

        非常感谢您的精彩回答!=)非常感谢您的精彩回答!=)