我们正在考虑使用自定义超级POM来维护多个不相关项目中常见的Spring,Hibernate和Logging依赖项。
这些项目具有不同的发布周期,可以满足不同的业务功能。
我们想要这样做的原因是
我的问题是:
a)这种方法有意义吗?如果我需要升级项目B怎么办? 依赖性,不能保证项目A和项目的变更 项目C?
b)有没有办法强制运行Maven-Enforcer插件 每次为项目运行构建时?
c)具有共同依赖关系的其他优点是什么? 在Super POM中维护?
非常感谢。
答案 0 :(得分:1)
一般来说,这是有道理的。但这取决于您的实际用例。例如,我不会为log4j执行此操作,但安全相关的依赖项可能有意义,因为您不想发布不安全的内容,是吗?
当然,您可以将enforcer插件绑定到某个后期阶段。
对于不相关的项目,我没有看到超级POM的许多优点。我使用它来确保与jasypt或spring-security等安全相关的东西保持最先进水平的唯一原因。
答案 1 :(得分:1)
使用公司父POM来确保一致的依赖关系是有意义的。一旦你处理Spring / Hibernate项目,这非常有用。但是这种方法只有在有人负责维护超级POM并在项目需要时创建新版本时才有效。一旦有新版本的超级POM可用,就可以为团队提供迁移过程(更好的未来维护)。这是可能的,但不是微不足道的。
如果你有很多项目,你可能需要不止一个超级POM。否则,您的一些项目将依赖于不必要的依赖项。例如,您可以拥有一些带有UI层的项目,而其他项目则没有UI层。
我推荐用于基于Spring / Hibernate的项目的方法是使用Spring Boot依赖项。 Spring Boot团队以非常灵活的方式为您确保一致的依赖关系。
通过这种方法,您不需要专门的人员来维护您的企业POM,并且您将受益于Spring的团队技能。在需要维护时,您的团队可以自由升级到一组新的Spring Boot依赖项。
检查这两个链接,了解有关如何使用Spring Boot依赖关系的详细信息: