gpt4 book ai didi

java - 努力理解 Maven 依赖范围和类路径

转载 作者:行者123 更新时间:2023-12-02 08:58:12 25 4
gpt4 key购买 nike

假设此操作工作流程:

  • 我有我的 Eclipse maven 项目。

  • 我打开 pom.xml,并添加范围为“运行时”的依赖项 Dependency1

  • 一旦我保存了 pom.xml,Eclipse 就会从中央存储库下载依赖项并将其放入本地存储库的 .m2 文件夹中。

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

  • 对于maven文档:“这个作用域表明依赖不是编译所必需的,而是执行所必需的。它位于运行时和测试类路径中,但不在编译类路径中."

    一旦我写import Depencency1.targetPackage.*;,我就会得到导入“Dependency1无法解析”因为我想象“有人”正在寻找不包含它的“路径”(谁定义该路径)下的 Dependency1.jar?!
    这个抽象概念对我来说很清楚,但它想深入了解从我在 eclipse 上将 import 语句写入 .java 文件的那一刻起发生了什么(以及谁让它发生) “无法解析包”。

  • 我也想更好地理解(但我认为这将伴随着对上述观点的理解),这对 Maven 打包过程有何影响。例如,我想象通过运行时依赖项下载的 JAR 不会物理地包含在生成的可交付成果中(JAR、WAR、EAR)?

感谢您的帮助,我正在寻找很多东西,但确实找不到完整的解释来满足我的所有疑问。

戴维德

最佳答案

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

关于java - 努力理解 Maven 依赖范围和类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60364347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com