Maven поднимает зависимость от новой версии - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть 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.Примечание. Несмотря на эту проблему, при сборке и запуске проекта из консоли он работает нормально.Но для целей отладки мне нужно, чтобы он работал в IDE, например Intellij / Eclipse

Это также одна из причин проблемы - драйвер htmlunit дает мне com.gargoylesoftware.htmlunit.html.HtmlPage не можетбыть приведенным к com.gargoylesoftware.htmlunit.InteractivePage ошибка

1 Ответ

0 голосов
/ 27 сентября 2018

Пожалуйста, добавьте mave-inspecer-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

Добро пожаловать в банку ада.

...