Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止代码使用某些依赖项的错误版本?_Java_Maven_Intellij Idea - Fatal编程技术网

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

Java 如何防止代码使用某些依赖项的错误版本?,java,maven,intellij-idea,Java,Maven,Intellij Idea,我有一个依赖于JAR文件的项目。这个JAR的版本经常变化,我们很难确保使用正确的版本。在调查bug时,它也会引起问题:哪个版本的JAR包含bug。一些程序员可能会忘记更新相应的依赖项,并在项目中包含这个JAR的两个版本,以便类加载器可以找到一个旧版本 问题是如何解释这个问题 我有以下计划: 1) 当发生错误时,记录我正在使用的JAR名称,以确保它是正确的版本。我打算用类似的东西 this.getClass().getResource(someResourceINeedFromThatJar).g

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

问题是如何解释这个问题

我有以下计划:

1) 当发生错误时,记录我正在使用的JAR名称,以确保它是正确的版本。我打算用类似的东西

this.getClass().getResource(someResourceINeedFromThatJar).getFile()
2) 我可以写一个测试来解释这一点。但是我不知道如何在Maven构建的包阶段之后运行测试


3) 也许您可以为此提出其他建议?

好吧,我们有相同的场景,并通过使用mavendependencyManagement解决了这个问题

它有两个功能

  • 为子模块/子项目中的依赖项设置默认版本
  • 重写可传递依赖项的版本
  • 它确实重写了可传递依赖项中的指定值

    enforcer插件不会忽略依赖项管理。但是无法识别差异,因为可传递依赖项的版本在开始工作之前已更改

    这是一篇很好的文章:你可以浏览一下:


    另一个来源:

    您可能正在寻找非常感谢的信息!但这对不是父工件子工件的工件有效吗?这是我们面临的问题。有没有办法检查构建只包含某个依赖项的一个版本(或所有版本)并打印出来?