maven - 为什么maven会忽略测试依赖项中定义的编译传递依赖项的版本
问题描述
我在 serenity.version 设置为 2.0.30 的 Maven 项目中有以下测试依赖项
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-junit</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-screenplay</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-screenplay-webdriver</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
</dependency>
正如您在此处看到的那样,serenity-core-2.0.30 的所有 selenium 依赖项都设置为 3.141.59
运行mvn -U dependency:tree -Dincludes=org.seleniumhq.selenium
输出以下
[INFO] --- maven-dependency-plugin:3.0.2:tree (default-cli) @ core ---
[INFO] <snip>
[INFO] \- net.serenity-bdd:serenity-junit:jar:2.0.30:test
[INFO] \- net.serenity-bdd:serenity-core:jar:2.0.30:test
[INFO] +- org.seleniumhq.selenium:selenium-server:jar:3.141.59:test
[INFO] | +- org.seleniumhq.selenium:selenium-firefox-driver:jar:3.9.1:test
[INFO] | +- org.seleniumhq.selenium:selenium-ie-driver:jar:3.9.1:test
[INFO] | \- org.seleniumhq.selenium:jetty-repacked:jar:9.4.12.v20180830:test
[INFO] +- org.seleniumhq.selenium:selenium-java:jar:3.9.1:test
[INFO] +- org.seleniumhq.selenium:selenium-api:jar:3.9.1:test
[INFO] +- org.seleniumhq.selenium:selenium-chrome-driver:jar:3.9.1:test
[INFO] +- org.seleniumhq.selenium:selenium-edge-driver:jar:3.9.1:test
[INFO] +- org.seleniumhq.selenium:selenium-remote-driver:jar:3.9.1:test
[INFO] +- org.seleniumhq.selenium:selenium-safari-driver:jar:3.9.1:test
[INFO] +- org.seleniumhq.selenium:selenium-opera-driver:jar:3.9.1:test
[INFO] +- org.seleniumhq.selenium:selenium-support:jar:3.9.1:test
[INFO] \- org.seleniumhq.selenium:htmlunit-driver:jar:2.29.3:test
我必须添加以下依赖项以避免运行时错误 - 为什么使用版本 3.9.1 以及如何避免这种情况?
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-api</artifactId>
<version>3.141.59</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-support</artifactId>
<version>3.141.59</version>
<scope>test</scope>
</dependency>
解决方案
事实证明 spring-boot-dependencies-2.0.3.RELEASE 将属性 selenium.version 设置为 3.9.1 并在它的 dependencyManagement 部分中列出了除了 selenium-server 工件之外的所有工件 -selenium.version
我的 POM 中的设置解决了这个问题。
推荐阅读
- jmeter - Jmeter - 如何将多个动态值分配给循环内的变量
- hyperledger-fabric - 订购者服务筏共识领导者问题
- docker - Cloud Build 中运行的容器无法访问 Cloud SQL 代理
- apache-flink - 从具有批处理表环境的文件读取时发生 NoMatchingTableFactoryException
- language-translation - 将 Azure 翻译限制增加到每次调用超过 10000 个字符
- typescript - 打字稿:省略嵌套属性
- python - Ansible 和 Amazon Linux 2:如何在 Python3 中使用 yum 模块?
- javascript - 如何在 Angular 中更改 Bootstrap 元素的属性
- c++ - 如何声明返回在同一个类中使用的类实例的函数?
- sql-server-data-tools - DACPAC 文件中 model.xml 中的 SSDT COLUMN_SET FOR ALL_SPARSE_COLUMNS