【问题标题】:How to automate discovering dependency conflict如何自动发现依赖冲突
【发布时间】:2019-10-29 10:43:43
【问题描述】:
我开发的 Java 应用程序应该在我无法直接访问的服务器上运行。有时会出现依赖冲突。我的意思是,在某些服务器上,应用程序运行良好,而在其他服务器上,相同的应用程序失败。并且错误表明库版本冲突。我希望应用程序通知库版本冲突,而不仅仅是与NoSuchFieldError、NoSuchMethodError、NoClassDefFoundError 等一起崩溃。
我可以通过mvn dependency:tree获取应用构建平台上的库列表
因此,我需要应用程序在其运行的平台上读取库版本,将其与构建平台上的库列表进行比较,并报告版本不匹配的情况。那么,应用程序如何在运行时定义库呢?或者是否存在更方便的方法来自动发现依赖冲突?
【问题讨论】:
标签:
java
jar
dependencies
conflicting-libraries
【解决方案1】:
我相信您需要在部署之前解决此类问题。您不能依赖运行工具来保存。所以我建议在更早的阶段解决它们。
如果你使用 maven 来管理依赖。你可以试试:
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>1.4.1</version>
<configuration>
<rules><dependencyConvergence/></rules>
</configuration>
</plugin>
</plugins>
然后
mvn enforcer:enforce
你可以阅读这个good material