首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果Maven依赖与临时冲突发生冲突,是否有可能在中介期间将其标记为“较低优先级”?

如果Maven依赖与临时冲突发生冲突,是否有可能在中介期间将其标记为“较低优先级”?
EN

Stack Overflow用户
提问于 2019-11-15 14:15:14
回答 1查看 131关注 0票数 0

我正在创建一个测试助手库,它使用来自其他几个项目的补丁。其中一些项目可能实际上使用这个测试助手作为他们自己的测试的一部分。这似乎是循环的,但事实证明不是多模块设置造成的;只有主服务模块的测试才会使用测试助手库,而客户端、模拟器和夹具模块则不受这种依赖:

代码语言:javascript
复制
- project foo
  - foo-service
    -> test-helper-lib (in <scope>test</scope> only)
  - foo-client
  - foo-emulator
  - foo-fixture
- project bar
  - bar-service
  - bar-client
  - bar-emulator
  - bar-fixture
- project test-helper-lib
  - test-helper-lib
    -> foo-client
    -> foo-fixture
    -> bar-client
    -> bar-fixture

现在,更准确地说,每个服务的测试确实添加了它的客户端、模拟器和夹具作为依赖项。所以更像是:

代码语言:javascript
复制
- project foo
  - foo-service
    -> test-helper-lib (in <scope>test</scope> only)
    -> foo-client
    -> foo-emulator
    -> foo-fixture
  - foo-client
  - foo-emulator
  - foo-fixture
- project bar
  - bar-service
    -> bar-client
    -> bar-emulator
    -> bar-fixture
  - bar-client
  - bar-emulator
  - bar-fixture
- project test-helper-lib
  - test-helper-lib
    -> foo-client
    -> foo-fixture
    -> bar-client
    -> bar-fixture

那么,您可以看到,在.之间可能存在一个传递依赖冲突.

代码语言:javascript
复制
- foo-service
  - test-helper-lib
    - foo-client

代码语言:javascript
复制
- foo-service
  - foo-client

在这种情况下,在foo-service中,我总是希望排除foo-{client、仿真器、夹具}的测试助手库的版本,因为我希望foo服务测试使用最新的客户端、模拟器和夹具,而不是与test-lib-helper一起打包的旧版本。我可以做一些事情来将测试助手库标记为具有低优先级的传递依赖关系吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-15 20:31:31

首先,我想你并没有在你的设置中描述的问题。Maven有一个“最近的依赖赢”规则。由于您的test-helper-lib依赖项似乎比其他依赖项嵌套得更多,因此它们将松散。

不过,一般情况下,我不太喜欢Maven依赖中介。一旦依赖树变得拥挤,就很难找到真正“获胜”的版本。我建议大量使用<dependencyManagement>,它允许您控制传递依赖关系的版本(而不实际向依赖树添加可能不需要的内容)。

对于您的具体问题:不,您不能或多或少地优先考虑版本号。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58878833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档