处理可选依赖项的最佳策略

Axe*_*ine 26 java dependencies maven

我目前正在从Flyway中删除Spring依赖项.将来虽然可能需要其他类型的依赖项来支持用户子集(例如JBoss VFS支持).

哪个是支持可选依赖项最佳方法(在Maven POM中可选= true)?

解决方案的质量如下:

  • 最终用户的易用性(如果存在依赖性,则使用功能所需的最少工作量)
  • 开发人员易于使用(处理可选依赖项的代码应尽可能可读且简单明了)
  • 没有不必要的依赖项(如果某些最终用户不需要此功能,则无需引入依赖项)

Mar*_*nor 12

我认为Maven的可选依赖功能非常有限.

http://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html

默认情况下,可选依赖项不会被删除(作为传递依赖项).但是,如果您的用户需要使用这些可选功能,则必须在其POM中显式声明缺少的依赖项.

就个人而言,我不清楚这对用户有何帮助....我想POM中的可选依赖项会记录您的代码所依赖的版本.然而,并非所有用户都会阅读POM,所有他们都会看到"NoClassDef Found"错误:-(

我最后的观察是,这是一种罕见的场景,像常春藤这样的依赖管理器提供了更大的灵活性.常春藤有一个叫做"配置"的概念.模块作者可以组合不同的依赖关系组合,例如"with-spring"或"without-spring".