我开发的Java应用程序应在我无法直接访问的服务器上运行。有时会发生依赖冲突。我的意思是,在某些服务器上,该应用程序可以完美运行,而在其他服务器上,同一应用程序则会失败。并且错误表明库版本冲突。我希望应用程序通知库版本冲突,而不仅仅是崩溃NoSuchFieldError
,NoSuchMethodError
,NoClassDefFoundError
等。
我可以使用mvn dependency:tree
在应用程序构建平台上获取库列表。
因此,我需要应用程序在其运行的平台上读取库版本,并将其与构建平台上的库列表进行比较,并报告有关版本不匹配的信息。那么,应用程序如何在运行时定义库?还是存在一种更便捷的方法来自动发现依赖冲突?
答案 0 :(得分:0)
我相信您需要在部署之前解决此类问题。您不能依靠运行工具进行保存。所以我建议在更早的阶段解决它们。
如果使用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