Java 跨不相关项目的共享依赖关系

Java 跨不相关项目的共享依赖关系,java,spring,hibernate,maven,Java,Spring,Hibernate,Maven,我们正在考虑一个定制的超级POM,用于维护多个不相关项目中常见的Spring、Hibernate和日志依赖关系 这些项目具有不同的发布周期,以满足不同的业务功能 我们想这样做的原因是 确保整个组织有一个共同的框架,以便更好地进行未来维护 确保对操作系统版本的升级不会对需要升级每个项目的多个项目产生级联效应 我的问题是: a) 这种方法有意义吗?如果我需要升级项目B怎么办 依赖关系,这难道不能保证项目a和 项目C b) 有没有办法强制运行Maven-Enforcer插件 每次为项目运行生成时 c

我们正在考虑一个定制的超级POM,用于维护多个不相关项目中常见的Spring、Hibernate和日志依赖关系

这些项目具有不同的发布周期,以满足不同的业务功能

我们想这样做的原因是

  • 确保整个组织有一个共同的框架,以便更好地进行未来维护
  • 确保对操作系统版本的升级不会对需要升级每个项目的多个项目产生级联效应
  • 我的问题是:

    • a) 这种方法有意义吗?如果我需要升级项目B怎么办 依赖关系,这难道不能保证项目a和 项目C

      b) 有没有办法强制运行Maven-Enforcer插件 每次为项目运行生成时

      c) 拥有公共依赖项的其他优势是什么 在超级POM中维护


    提前多谢。

    一般来说,这是有道理的。但这取决于您的实际用例。例如,我不会对log4j这样做,但是安全相关的依赖可能是有意义的,因为您不想发布不安全的东西,是吗

    当然,您可以将enforcer插件绑定到某个后期阶段

    对于不相关的项目,我看不到超级POM有多少优势。我使用它来确保像jasypt或spring security这样与安全相关的东西保持最先进水平的唯一原因


    您可以使用。

    使用公司父级POM来确保一组一致的依赖关系是有意义的。这在处理Spring/Hibernate项目时非常有用。但是,只有当有人负责维护超级POM并在项目需要时创建新版本时,这种方法才有效。并在super POM的新版本可用时(更好的未来维护)支持团队的迁移过程。这是可能的,但不是微不足道的

    如果你有很多项目,你可能需要不止一个超级POM。否则,您的一些项目将依赖于不必要的依赖关系。例如,您可能有一些带有UI层的项目,而其他项目没有UI层

    我为基于Spring/Hibernate的项目推荐的方法是使用Spring引导依赖项。SpringBoot团队以非常灵活的方式为您确保一组一致的依赖项

    使用这种方法,您不需要专门的人员来维护您的企业POM,您可以从Spring的团队技能中获益。当需要维护时,您的团队可以免费升级到一组新的Spring引导依赖项

    有关如何使用Spring引导依赖项的详细信息,请查看以下两个链接:


    感谢您的洞察力。