問題:我需要結合使用我的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」。這就是爲什麼我想爲這種情況編寫一個額外的插件。這個插件會檢查:如果你依賴某個工件,你應該依賴那些從工件中排除的工件。如果你失去了一些神器,你需要添加它或者配置一個異常。 您對這樣的解決方案有什麼看法?