2013-04-10 37 views
4

我开始修复一个使用maven的java项目,同时我已经构建了项目,在运行时它失败并且缺少依赖关系。我看了一下,错误遗漏了包含编译时依赖的可选依赖。我可以通过并添加这些内容,但在我看来,我可以将所有的东西都构建并运行得很好,只是因为我遗漏了一些代码而使用了缺失的依赖关系,整个事情就会崩溃。Maven和可选的运行时依赖关系

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

目前我解决此工作的方法是阅读劲歌,并尝试从那里工作了,但我不认为这是特别强劲。

仅供参考,我是相当新的Maven的风格依赖管理和面对它喜欢它,但是这件事可选是有点对我来说是绊脚石。我明白,可选项阻止了我将不会使用的依赖关系,但它没有为我单击我如何​​可以研究哪些可选项可用并且我确实需要。

我使用Eclipse朱诺,m2eclipse的(也有行家3.0.5 CLI),java的6/7。

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

回答

2

没有事情 - 有点 - 就是这样。 Maven不会执行依赖关系管理,它允许您通过提供使用和分析它们的工具来执行依赖关系管理。所以这项工作仍然在开发者方面。人们经常混淆起来。

这主要是由于项目通常有不同的部署目标。因此,有时候他们会收集一堆jar文件,这些文件会被复制到tomcat中,并被复制到weblogic的一组不同的文件中。因此,在您的项目中可能会有一个自述文件,指出在部署Maven工件之前要复制的内容。或者这是隐含的知识 - 那么你注定了。

依赖关系:分析不在源上的字节码。因此它没有看到maven知道什么。

也许mvn help:effective-pom给出了一个更好的基础来分析整个事情?或者您可以尝试修改依赖项插件以显示该信息。 Maven插件并不是很难处理。

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

前一段时间有选购的依赖关系的讨论,以及:Best strategy for dealing with optional dependencies - 这可能是也有帮助。

+0

谢谢。今晚我会看看这个。 – 2013-04-16 15:14:30

+0

K,另一个线程看起来很有趣,但并不能帮助我解决我的问题。如果这是我的代码,我会有一些机会,但是在代码中计算不属于我的可选项仅仅是痛苦的。我喜欢mvn help:effective-pom。我仍然认为,调查所需的依赖关系和识别可选项的poms似乎是我现在唯一的选择。我会等待其他人是否有任何答案,然后考虑回答问题。 – 2013-04-16 19:12:10

+0

耶 - 不是在这个意义上的答案:) 我偶然发现一个报告:http://maven.apache.org/plugins/maven-project-info-reports-plugin/dependency-convergence-mojo.html - 也许在报告部分有一些也提供了可选依赖关系的信息 – wemu 2013-04-17 08:55:48