Maven和可选的运行时依赖项

Mat*_*_JD 5 java maven

我开始修复一个使用了maven的java项目,而我已经有了要构建的项目,在运行时它失败并缺少依赖项.我看了一下,错误是缺少包含编译时依赖项的可选依赖项.我可以通过添加这些,但在我看来,我可以拥有一切建设和运行良好只为我错过使用缺少依赖的一些代码,整个事情崩溃.

我真正想知道的是,是否有一种自动方式来查找我选择不包含的可选依赖项.我已经使用了mvn dependency:tree但这只显示了我所拥有的依赖关系(不确定它检查的范围)并且我已经尝试过mvn dependency:analyze但这似乎显示了它认为我不使用的依赖关系以及那些间接被拉下来的依赖关系.我看不到的是如何查看我不包括的选项列表.

目前我的解决方法是阅读poms并尝试从那里开始,但我不认为这特别强大.

作为参考,我对maven风格依赖管理相当新,并且就像它一样,但这个可选的东西对我来说是一个绊脚石.我理解选项会阻止我拉下我不会使用的依赖关系,但它没有点击我如何我可以锻炼哪些选项可用并且我确实需要.

我正在使用Eclipse Juno,m2Eclipse(也有maven 3.0.5 cli),java 6/7.

任何人都有任何想法,我怎么能做得更好,或者我完全忽略了什么?

wem*_*emu 2

不,事情是这样的。Maven 不进行依赖关系管理,它允许您通过提供使用和分析依赖关系的工具来进行依赖关系管理。所以工作仍然在开发者这边。人们经常混淆这一点。

这主要是由于项目往往有不同的部署目标造成的。因此,有时他们会收集一堆 jar 文件,这些文件被复制到 tomcat 中,并为 weblogic 收集一组不同的文件。因此,您的项目中可能有一个自述文件,说明在部署 Maven 工件之前要复制的内容。或者它是隐性知识——那么你就注定失败。

dependency:analyze 适用于字节码而不是源。因此它看不到 Maven 知道的内容。

也许mvn help:effective-pom为分析整个事情提供了更好的基础?或者您可以尝试修改依赖插件以显示该信息。Maven 插件并不难使用。

我不知道有哪个插件可以显示所有可选的传递依赖项。但由于依赖项的 pom.xml 文件已下载到本地 Maven 存储库中,因此您可以在那里进行文本搜索。

不久前也有关于可选依赖项的讨论:处理可选依赖项的最佳策略- 它可能也有帮助。