我应该关注大量依赖吗?

aio*_*obe 4 java dependencies libraries

我正准备在项目中包含HtmlUnit库.我解压缩了zip文件并意识到它有不少于12个依赖项.

在引入依赖项时,我一直很担心.我想我必须将所有这些依赖项与应用程序一起发送(在这种特殊情况下为8.7 MB).我是否应该费心检查这些库的安全更新?最后(最重要的是,实际上我最关心的是):如果我想要包含另一个库,该库依赖于与此库相同的库,但具有不同的版本,该怎么办?也就是说,如果例如HtmlUnit依赖于xalan的一个版本和我需要的另一个库,取决于不同版本的xalan?

HtmlUnit为我解决的任务可以 "手动"解决,但这可能不会那么优雅.

我应该关注这件事吗?在这些情况下,最佳做法是什么?

编辑:我对一般情况感兴趣,而不是特别涉及HtmlUnit.我只是在这里用它作为一个例子,因为那是我目前关注的问题.

Knu*_*ubo 6

小心处理您的依赖项.他们可以为你带来很多速度,但是在路上行走可能会很痛苦.这是我的想法:

  • 使用某些软件来维护您的依赖项.Maven是我用来做Java的.没有它,您很快就会忘记依赖关系.
  • 请记住,各种库具有不同的许可证.未授予给定许可证适用于您的设置.我在软件公司工作,我们不能在我们发布的任何软件中使用基于GPL的库,因为我们销售的软件是封闭源代码.同样我们也应该避免使用LGPL(这是由于一些错综复杂的律师推理,不要问我为什么)
  • 对于单元测试,我会说全力以赴.如果您将来必须重写测试,那么这不是世界末日.甚至可能是那部分软件要么非常稳定,要么甚至不能再维护.失去那些并不是什么大不了的事,因为当你得到它时你已经获得了巨大的收益.
  • 有些库比其他库更难以替换.有些像婚姻应该持续软件的生命,但其他一些只是易于更换的工具.(想想Spring和xml库)
  • 了解社区如何支持旧版本的库.他们支持旧版本吗?当生命继续而你被困在一个版本时会发生什么?是否有活跃的社区或您是否有自己维护的技能?
  • 您的软件应该持续多久?是一年,五年,十年还是一年?如果软件的时间跨度很短,那么您可以使用更多来实现目标,因为能够跟上升级库并不重要.