【问题标题】:Managing libraries dependencies in Maven project在 Maven 项目中管理库依赖项
【发布时间】:2013-11-16 18:03:00
【问题描述】:

作为 Maven 的初学者,我有一个小问题要完全理解并找到如何在我的 Java 应用程序中管理所有依赖项的最佳方法。在我的应用程序中,大约有 20-30 个外部库。这些库有自己的依赖库,其中一些库需要一个特定库的不同版本。这种情况如何解决?

我的主要问题是如何找出我的库的所有依赖项并且不要忘记它们中的任何一个。当我在寻找解决方案时,我发现http://search.maven.org/ 网站为所有库提供了自己的 pom.xml 文件,其中包含该特定库所需的所有依赖库。例如。这是Spring-core 3.2.5 的 pom.xml。

这些文件的用途是什么?可以在 Maven 项目中使用这些文件来指定依赖项吗?我希望如此,因为它包含关于一个特定库的有价值的信息,并且这个 pom.xml 文件的结构与标准 Maven pom.xml 文件中的结构相同。

如果可以直接在Maven中使用,这些文件放在哪里?我研究过标准 Maven 项目directory structure,但我不知道将它们放在哪里。

如果不能使用,这些 pom.xml 文件的用途是什么?复制依赖项并在我的 Maven 项目 pom.xml 文件中使用是否安全?这可能是如何找出所有需要的依赖项的解决方案。

【问题讨论】:

    标签: java maven dependencies


    【解决方案1】:

    将所有依赖项放在pom.xml 文件中,是的。这样,所有必需的依赖项都会自动从 Maven 存储库下载并打包到您的构建工件中。除了是否正确设置范围之外,您几乎不必担心其他任何事情。如果您有一个多模块 Maven 项目,请在根项目上使用 dependencyManagement。

    pom.xml 转到项目的根目录,顺便说一句。

    阅读更多here

    【讨论】:

      【解决方案2】:

      只需确保在 pom.xml 文件中包含应用程序的依赖项。

      存储库中的文件携带有关特定库依赖项的信息。除了应用程序的 pom.xml 文件之外,您不必放置任何其他文件。 Maven 会在打包您的应用程序时处理包含依赖项的依赖项。

      【讨论】:

      • 我是否正确理解您,Maven 知道我正在使用的库 A 在某些特定版本中具有依赖项 B、C、D,并且当我调用 mvn package 命令时,Maven 包含所有这些依赖项?即使我没有通过 Maven Shade Plugin 将我的应用程序打包到 uber-jar 中,它也可以像您提到的那样工作?感谢您的澄清。
      • 是的,正是如此。所有嵌套的依赖项都定义在项目依赖项的pom.xml 文件中,依此类推。
      猜你喜欢
      • 2013-06-22
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 2012-06-03
      • 2011-10-14
      • 1970-01-01
      • 2020-09-14
      • 2011-04-07
      相关资源
      最近更新 更多