问题:我需要结合使用我的maven项目中的许多工件:hbase,hadoop-client,akka,spray,netflix-curator,spark。所有这些工件都依赖于其他工件的不同版本:zookeper-client,protobuf,jetty等。我花了3天时间才将所有排除的内容正确写入到版本兼容性中。所以现在我已经有了非常一致的配置。我想创建一个框架来帮助我的同事工作在类似的堆栈上,使用我的工作成果,并且不用花3天的时间写作排除。处理maven依赖中的许多冲突的解决方案。
我知道maven-enforcer-plugin,它不允许你使用不同版本的相同工件。它有帮助,但还不够。
我很想听听您可能会建议的解决方案。这是我的愿景:我只创建一个拥有依赖管理的父pom。在这个依赖关系管理中,我编写了所有排除项并使工件兼容。然后有人可以使用这个pom作为父项,并且只是编写依赖关系。但有一个问题。我们从netflix-curator和hadoop中排除了zookeeper,但从hbase中排除。因此,当我们使用全部3个工件时,我们会收到来自hbase的zookeeper,但只使用netflix-curator和hadoop时,我们可能会丢失所需的工件。只有在运行时我们才会收到“ClassNotFoundException”。这就是为什么我想为这种情况编写一个额外的插件。这个插件会检查:如果你依赖某个工件,你应该依赖那些从工件中排除的工件。如果你失去了一些神器,你需要添加它或者配置一个异常。 您对这样的解决方案有什么看法?