Maven排除了哲学

时间:2014-03-11 12:28:39

标签: maven architecture dependency-management

  • 发明了什么maven Excluded dependencies
  • 我是否应该排除除了修复库冲突之外的任何依赖项?
  • 好的maven项目架构会是什么样子:
    • 倾向于尽可能地排除
    • 或根据需要尽可能减少?

2 个答案:

答案 0 :(得分:3)

我不知道设计的原因,但我已经看到它在以下情况中使用过:

  • 我有一个库junit作为编译时依赖项,因此JUnit代码泄漏到我的生产代码中。
  • 我有一个使用log4j的库。由于我使用slf4j,我使用依赖项排除来删除硬连线日志框架并使用slf4j-log4j网桥,因此我最终可以登录到logback
  • 在另一个案例中,我只使用了框架的某些功能,并且不需要所有依赖项。由于它们首先不是可选的,所以我使用了排除项目来保持我的课堂精益和清洁。

一般规则:

  1. 用它来摆脱破坏你构建的东西
  2. 摆脱你用其他东西取代的东西
  3. 摆脱你不认识的东西(可选)
  4. 如果没有适用的规则,请单独依赖;可能的是,直接的依赖性可能会随着时间的推移而发生变化,而且突然之间,它需要一些看起来多余的依赖,而你的代码会意外地破坏。

答案 1 :(得分:3)

除了亚伦的回答:

当依赖项的提供程序出错时(或者没有将依赖项置于可能的位置,包括实际的日志记录后端 - 与api相反 - 或使用了错误的范围)时,通常需要排除。

一个例外是日志框架。请参阅Aaron的答案。

所以不,如果您有特殊原因要排除它们,请仅排除依赖项。

相关问题