如何自动发现依赖冲突

时间:2019-06-14 19:35:42

标签: java jar dependencies conflicting-libraries

我开发的Java应用程序应在我无法直接访问的服务器上运行。有时会发生依赖冲突。我的意思是,在某些服务器上,该应用程序可以完美运行,而在其他服务器上,同一应用程序则会失败。并且错误表明库版本冲突。我希望应用程序通知库版本冲突,而不仅仅是崩溃NoSuchFieldErrorNoSuchMethodErrorNoClassDefFoundError等。 我可以使用mvn dependency:tree在应用程序构建平台上获取库列表。 因此,我需要应用程序在其运行的平台上读取库版本,并将其与构建平台上的库列表进行比较,并报告有关版本不匹配的信息。那么,应用程序如何在运行时定义库?还是存在一种更便捷的方法来自动发现依赖冲突?

1 个答案:

答案 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