我有一个Pom,其中包含了针对硒HTML单元驱动程序的依赖项。它与HtmlUnit v2.18有依赖关系。但是在查看依赖关系树时,我能够看到它选择了另一个我未指定的版本,从而导致了问题。
对pom的依赖性:
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-htmlunit-driver</artifactId>
<version>2.52.0</version>
</dependency>
依赖树(来自终端):
org.seleniumhq.selenium:selenium-htmlunit-driver:jar:2.52.0:compile
[INFO] | +- org.seleniumhq.selenium:selenium-support:jar:2.53.1:compile (version managed from 2.52.0)
[INFO] | | \- org.seleniumhq.selenium:selenium-remote-driver:jar:2.53.1:compile
[INFO] | +- net.sourceforge.htmlunit:htmlunit:jar:2.21:compile (version managed from 2.18)
[INFO] | | +- xalan:xalan:jar:2.7.2:compile
[INFO] | | | \- xalan:serializer:jar:2.7.2:compile
您可以清楚地看到htmlunit:jar:2.21:compile(版本从2.18开始管理)。我期待2.18。
如何解决此问题而不在我们的项目pom中添加适当的版本。 注意:尽管存在此问题,但是从控制台构建和运行项目时,它仍然可以正常运行。但是出于调试目的,我需要它在Intellij / Eclipse之类的IDE中运行
答案 0 :(得分:0)
请添加mave-enforcer-plugin以确定不同版本来自哪个依赖项:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-enforcer-plugin</artifactId>
<version>3.0.0-M2</version>
<executions>
<execution>
<id>enforce</id>
<configuration>
<rules>
<dependencyConvergence/>
</rules>
</configuration>
<goals>
<goal>enforce</goal>
</goals>
</execution>
</executions>
</plugin>
如您所知,您可以像下面的示例一样向依赖项添加排除项:
<dependency>
<groupId>displaytag</groupId>
<artifactId>displaytag</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
</exclusion>
</exclusions>
</dependency
欢迎来到罐子地狱。