不相关项目之间的共享依赖关系

时间:2014-05-23 14:20:35

标签: java spring hibernate maven

我们正在考虑使用自定义超级POM来维护多个不相关项目中常见的Spring,Hibernate和Logging依赖项。

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

我们想要这样做的原因是

  1. 确保整个组织的通用框架,以便日后维护
  2. 确保升级到OS版本不会对需要升级每个项目的多个项目产生级联效应。
  3. 我的问题是:

    • a)这种方法有意义吗?如果我需要升级项目B怎么办? 依赖性,不能保证项目A和项目的变更 项目C?

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

      c)具有共同依赖关系的其他优点是什么? 在Super POM中维护?

    非常感谢。

2 个答案:

答案 0 :(得分:1)

一般来说,这是有道理的。但这取决于您的实际用例。例如,我不会为log4j执行此操作,但安全相关的依赖项可能有意义,因为您不想发布不安全的内容,是吗?

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

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

您可以使用BOM pattern described in the maven docs

答案 1 :(得分:1)

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

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

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

通过这种方法,您不需要专门的人员来维护您的企业POM,并且您将受益于Spring的团队技能。在需要维护时,您的团队可以自由升级到一组新的Spring Boot依赖项。

检查这两个链接,了解有关如何使用Spring Boot依赖关系的详细信息: