Maven获取新版本的依赖

时间:2018-09-27 12:17:57

标签: java maven selenium selenium-webdriver htmlunit-driver

我有一个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.xml中的任何内容。
  • 还检查了依赖项收敛。 htmlunit:jar
  • 没有收敛

如何解决此问题而不在我们的项目pom中添加适当的版本。 注意:尽管存在此问题,但是从控制台构建和运行项目时,它仍然可以正常运行。但是出于调试目的,我需要它在Intellij / Eclipse之类的IDE中运行

这也是导致此问题的原因之一-htmlunit driver gives me com.gargoylesoftware.htmlunit.html.HtmlPage cannot be cast to com.gargoylesoftware.htmlunit.InteractivePage error

1 个答案:

答案 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

欢迎来到罐子地狱。