有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在理解maven依赖范围和类路径方面遇到了困难

假设此操作工作流:

  • 我有我的EclipseMaven项目

  • 我打开pom。xml,并添加范围为“runtime”的依赖项1

  • 只要我保存pom。在xml中,eclipse将从中央存储库下载依赖项,并将其放在我的本地存储库中。m2文件夹

  • 如果我使用libraries/maven依赖项,我会看到这个依赖项带有一个绿色图标(我想这意味着编译不需要它,如果我尝试在任何.java文件中导入该类,我会得到一个错误)

  • 至于maven文档:“此范围表示编译时不需要依赖项,而是执行时需要依赖项。它位于运行时和测试类路径中,而不是编译类路径

    我一写导入依赖1。targetPackage.*我得到导入的“依赖关系1无法解决”,因为我想象“有人”正在寻找依赖关系1。jar在不包含它的“路径”(谁定义该路径)下
    抽象概念对我来说很清楚,但它想深入了解从我将导入语句写入到文档的那一刻起发生了什么(以及是谁让它发生的)。eclipse上的java文件到了“包无法解析”的地步

  • 我还想更好地理解(但我认为这将伴随着对上述要点的理解),这是如何影响maven包装过程的。例如,我设想通过运行时依赖项下载的JAR不会实际包含在生成的可交付成果中(JAR、WAR、EAR)

谢谢你的帮助,我四处寻找了很多东西,但真的找不到一个完整的解释来填补我所有的疑问

戴维德


共 (1) 个答案

  1. # 1 楼答案

    作用域runtime的依赖项打包到最终的WAR/EAR中,但不可用于编译。如果api和impl被分成不同的JAR,则有时会使用此范围。然后,将impl标记为runtime可以防止意外使用impl中的类