我继承了一个maven项目(我还在学习maven)。
该项目有3个模块,有3个模块继承的父pom。
我需要对pom.xml进行更改以获取所请求的更改。
在我进行更改并运行项目后,我收到了错误。
Caused by: java.lang.ClassNotFoundException: org.quartz.spi.ClassLoadHelper
所以我注意到我的pom.xml排除如下:
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>framework</artifactId>
<version>1.0.9</version>
<exclusions>
<exclusion>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</exclusion>
<exclusion>
</dependency>
所以我删除了排除并再次运行项目以获得以下错误
Caused by: java.lang.IncompatibleClassChangeError:
class org.springframework.scheduling.quartz.CronTriggerBean
has interface org.quartz.CronTrigger as super class
所以看起来排除意味着因为其他依赖性满足了石英依赖性。
看起来像我添加了新的依赖项之后,某种方式已经排除了石英依赖。
我的问题是:
如何确定石英依赖性带来了什么? 如何确保通过添加新的依赖关系我不排除现有的石英依赖?
答案 0 :(得分:1)
看一下命令
mvn dependency:tree
答案 1 :(得分:0)
您可以查看maven dependency tree以了解石英依赖项带来了什么。
答案 2 :(得分:0)
Maven跟随 - &#39;依赖调解&#39;算法在依赖关系之间进行选择。规则是:
最近的第一个:较低级别的依赖关系优先于
另一个更高的深度。 (这里,等级指的是第1级,第2级
等级传递依赖等)因此,直接依赖有
优先于传递依赖。
First Found - 在同一级别,找到第一个依赖项。
因此,要确定哪个依赖项引入了Quartz依赖项,请查看pom.xml的依赖关系层次结构 - http://books.sonatype.com/m2eclipse-book/reference/dependencies-sect-analyze-depend.html#fig-dependencies-pom-editor-locate-depend
为了确保您没有丢失当前的石英依赖项,请将其作为直接依赖项添加到pom.xml中。这将覆盖所有石英传递依赖项。