gpt4 book ai didi

java - 具有测试范围的递归 Maven 依赖项

转载 作者:行者123 更新时间:2023-12-02 06:01:21 29 4
gpt4 key购买 nike

我有一个基础项目(common)和几个依赖common的项目(P1,P2,...)。所有项目都有一些共同的依赖项,例如 JUnit。为了避免复制公共(public)依赖项,我将它们放在公共(public) pom.xml 中

    <dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>

P1 POM依赖于common

    <dependency>
<groupId>com.example</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>

当我向 P1 添加 JUnit 测试用例时,Eclipse 显示“导入 org.junit 无法解析”。但是,当我删除 junit 的 common pom.xml 中的“test”范围时,错误就解决了。

为什么maven不能正确处理递归依赖?我缺少什么?有没有更好的方法来处理常见的依赖关系?

最佳答案

test 作用域依赖项永远不会传递。

您可以做的是将您的common-dependency拆分为common-dependencycommon-test-dependency

两者都包含compile(默认)范围内的所有依赖项。

现在您包括两个依赖帮助程序,但测试依赖项本身包含在测试范围内。

<dependency>
<groupId>com.example</groupId>
<artifactId>common-dependencies</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.example</groupId>
<artifactId>common-test-dependencies</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>test</test>
</dependency>

compile->test 依赖链解析为传递依赖的 test 依赖,所以你可以开始了。

如果需要,相同的技术也可用于其他范围。

风格两点:

  • 如果 common 也包含自己的代码,请考虑将其拆分为依赖项部分和公共(public)代码部分
  • 如果您使用仅依赖项的 pom 项目,请始终将它们称为 *-dependencies,这样无需深入研究即可更容易理解

关于java - 具有测试范围的递归 Maven 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22656641/

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