我有一个依赖于JAR文件的项目。这个JAR的版本经常变化,我们很难确保使用正确的JAR。在调查错误时也会导致问题:哪个版本的JAR包含错误。一些程序员可能忘记更新相应的依赖项,并在项目中包含此JAR的两个版本,以便类加载器可以找到旧版本。
问题是如何解决这个问题。
我有以下计划:
1)发生错误时记录我正在使用的JAR名称以确保它是正确的版本。我计划使用像
这样的东西this.getClass().getResource(someResourceINeedFromThatJar).getFile()
2)我可以写一个测试来解释这个问题。但我不知道如何在我的Maven构建的包阶段之后运行测试
3)也许你可以为此提出别的建议吗?
答案 0 :(得分:3)
好吧,我们有相同的场景,并通过使用maven dependencyManagement
解决了问题它做了两件事。
它会覆盖传递依赖项中的指定值。
enforcer插件不会忽略 dependencyManagement 。但由于传递依赖版本在上线之前被更改,因此无法识别出这种差异。
这是一篇很好的文章:你可以通过它: http://andydennie.com/2012/08/02/maven-enforcer-plugin-vs-dependencymanagement/
另一个来源:http://maven.apache.org/enforcer/maven-enforcer-plugin/