gpt4 book ai didi

Maven添加不在pom文件中的依赖项

转载 作者:行者123 更新时间:2023-12-04 05:00:21 24 4
gpt4 key购买 nike

我在 pom 文件中定义了一个只有两个依赖项的模块,但是生成的 .classpath 文件(使用 mvn eclipse:eclipse)还包含其他依赖项。

我检查了这个 pom 中添加的模块的依赖关系,但并不是所有的模块都被添加了。

所以场景是:

  • 项目 A 依赖项目 B
  • 项目 B 依赖于项目 X、Y 和
    Z

  • 当我在项目 A 上运行 mvn eclipse:eclipse 时,.classpath 文件包含项目 B 和项目 X 和 Y,但不包含 Z。

    这不会引起任何问题,但这是预期的行为吗?

    最佳答案

    是的,这是预期的行为。项目 B 需要 X、Y 和 Z 才能正常工作,因此这些依赖项(称为 传递依赖项 )实际上是您项目的一部分。

    this有关 maven 依赖项解析的详细说明。

    您可以调用mvn dependency:treemvn dependency:list从命令行查看所有依赖项,包括传递的依赖项。

    如果你知道你依赖于一个 Artifact ,但它会在运行时可用,就像应用服务器上的 Java EE 库一样,你可以将它们标记为 provided在您的 pom :

    <dependency>
    <groupId>group</groupId>
    <artifactId>artifact</artifactId>
    <version>1.0</version>
    <scope>provided</scope>
    </dependency>

    这些依赖项不会包含在生成的 atrifact 中。

    编辑:请原谅我糟糕的阅读能力:) 我已经监督了“Z”之前的“不”。

    如果 Z 的依赖项定义为 provided,这可能仍然是正常行为。或 optional标志设置为 true ,或者如果它被排除在外。见 this用于 maven 处理可选和排除依赖项。

    如果这些选项都不适用,那么我希望 Z 与其他依赖项一起存在。最好的检查方法是运行 mvn dependency:treemvn dependency:list并 grep Z 的输出。

    关于Maven添加不在pom文件中的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16214524/

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