我们正在进行一些架构重构。我们是一家 SaaS 公司,因此所有部署都是到我们自己管理的服务器上。当前模型将我们所有的二进制文件以及我们使用的第三方库打包到ears、wars、tars等中。这些包包括它们依赖的所有库。
当它们部署时,它们会被手动爆炸(解压缩)或被它们构建的任何目标容器拾取。
由于这些库没有太大变化,我们想知道作为环境设置的一部分预先部署这些库是否是一个更好的主意,并根据需要更新它们。我们不偏向任何一种方式,我只是在寻找一些反馈。
最佳答案
通常最好用耳朵、 war 等来打包库。一些原因是:
- 配置新服务器时可以节省时间。如果您不将依赖项与可部署项打包在一起,则可能需要很长时间才能在新的目标服务器计算机上获取所有正确的库。
- 您可以将不同的 .war 文件部署到依赖于同一库的不同版本的应用服务器
- 如果您将依赖项与可部署项打包在一起(只需重新部署),那么升级库就很简单。如果您的库是独立的,您需要执行额外的步骤来部署新库(以及另一个可能出错的地方)。
- 如果包含依赖项,您可以确保部署在测试环境中的 .war 在生产环境中的行为相同。测试/生产环境与集中式库和版本的细微差异通常会导致问题。
- 您的依赖项列表非常明确。例如,您可以进行开源许可证审核。如果你不将依赖项打包到你的包中,你永远不知道......
关于java - 我们应该将我们的第三方库与我们的组件打包在一起吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2105463/