如何防止代码使用某些依赖项的错误版本?

时间:2015-03-25 17:26:18

标签: java maven intellij-idea

我有一个依赖于JAR文件的项目。这个JAR的版本经常变化,我们很难确保使用正确的JAR。在调查错误时也会导致问题:哪个版本的JAR包含错误。一些程序员可能忘记更新相应的依赖项,并在项目中包含此JAR的两个版本,以便类加载器可以找到旧版本。

问题是如何解决这个问题。

我有以下计划:

1)发生错误时记录我正在使用的JAR名称以确保它是正确的版本。我计划使用像

这样的东西
this.getClass().getResource(someResourceINeedFromThatJar).getFile()

2)我可以写一个测试来解释这个问题。但我不知道如何在我的Maven构建的包阶段之后运行测试

3)也许你可以为此提出别的建议吗?

1 个答案:

答案 0 :(得分:3)

好吧,我们有相同的场景,并通过使用maven dependencyManagement

解决了问题

它做了两件事。

  1. 为子模块/子项目中的依赖项设置默认版本
  2. 覆盖传递依赖项的版本
  3. 它会覆盖传递依赖项中的指定值。

    enforcer插件不会忽略 dependencyManagement 。但由于传递依赖版本在上线之前被更改,因此无法识别出这种差异。

    这是一篇很好的文章:你可以通过它: http://andydennie.com/2012/08/02/maven-enforcer-plugin-vs-dependencymanagement/

    另一个来源:http://maven.apache.org/enforcer/maven-enforcer-plugin/