我有一个网络项目和一个pom.xml
文件。它与compile
和package
有足够的依赖关系,但还不足以启动项目。在我的IDE中,它显示一切正常,但是当启动应用程序时它有错误。当我从另一个应用程序添加外部pom.xml时,我的应用程序启动。
那么有什么方法可以找出哪些依赖项缺失,以及将来如何确定使用这个或那个需要哪些依赖项呢?
答案 0 :(得分:5)
您可以使用mvn dependency:analyze
来确定哪些依赖项为used and declared
或used and undeclared
或unused and declared
。
有关更多信息,请参阅:http://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html。
希望这有帮助。
答案 1 :(得分:2)
没有maven命令来实现这一目标。您需要检查哪些类导致NoClassDefFoundError
,找出依赖项(Google) - 它们随附的JAR,并在pom.xml中添加runtime
范围。
在Web项目中,您经常针对servlet或Java EE规范JAR进行编译(它们只包含接口),但是您需要在运行时存在实际的实现JAR。这些JAR通常被假定在您运行的容器中可用(如Tomcat或JBoss),在这种情况下,它们将在您的pom.xml中标记为provided
范围。
答案 2 :(得分:0)
您需要检查输出日志中的NoClassDefFoundError
并相应地添加依赖项。
搜索缺少的依赖项的最佳资源是Maven Central Repository
要获取构建的详细调试日志,请在命令行中使用-X
。
您可以按照以下命令 - mvn dependency:tree
检查项目的依赖关系树。这将只列出您pom.xml
更多信息中列出的有关deoendencies的信息here