okhttp3 mockwebserver 的 Maven 依赖项版本错误
Maven dependencies wrong version for okhttp3 mockwebserver
我正在尝试将 okhttp3.mockwebserver 与我的 Spring 引导项目一起使用,我发现包含 okhttp3:mockwebserver:jar:3.14.9 而不是 4.9.1.
我创建了小型 'mock' 项目来重现我在产品中遇到的问题。
项目在这里https://github.com/mkarasik/okhttp-test
它包含两个文件夹:
库
这是一个简单的库,包括 mockwebserver 作为依赖项
pom.xml依赖
<dependencies>
...
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<version>4.9.1</version>
<exclusions>
<exclusion>
<artifactId>junit</artifactId>
<groupId>junit</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
Maven 依赖关系树
\- com.squareup.okhttp3:mockwebserver:jar:4.9.1:compile
+- com.squareup.okhttp3:okhttp:jar:3.14.9:compile
这已经错了。 Mockwebserver pom 包含 4.9.1 okhttp 工件,但是 3.14.9 显示在 tree
项目
简单Spring 包含 lib 项目的启动应用程序
<dependency>
<groupId>com.example</groupId>
<artifactId>lib</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>
Maven 依赖关系树
\- com.example:lib:jar:0.0.1-SNAPSHOT:test
\- com.squareup.okhttp3:mockwebserver:jar:3.14.9:test
\- com.squareup.okhttp3:okhttp:jar:3.14.9:test
\- com.squareup.okio:okio:jar:1.17.2:test
同样的问题在这里。包含 okhttp3:mockwebserver:jar:3.14.9 而不是 4.9.1,因为它在我的库 pom.xml.
中指定
我的 xml 配置中是否缺少任何内容?
找到了,它在
中有描述
<properties>
<okhttp3.version>4.9.1</okhttp3.version>
</properties>
解决了问题
OkHttp 提供了一个 Maven BOM,您可以使用它来确保版本一致
https://github.com/square/okhttp#releases
Also, we have a bill of materials (BOM) available to help you keep
OkHttp artifacts up to date and be sure about version compatibility.
这个例子是gradle,但是你它本来就是maven的特性
https://docs.gradle.org/6.2/userguide/platforms.html#sub:bom_import
dependencies {
// define a BOM and its version
implementation(platform("com.squareup.okhttp3:okhttp-bom:4.9.3"))
// define any required OkHttp artifacts without version
implementation("com.squareup.okhttp3:okhttp")
implementation("com.squareup.okhttp3:logging-interceptor")
}
我正在尝试将 okhttp3.mockwebserver 与我的 Spring 引导项目一起使用,我发现包含 okhttp3:mockwebserver:jar:3.14.9 而不是 4.9.1.
我创建了小型 'mock' 项目来重现我在产品中遇到的问题。
项目在这里https://github.com/mkarasik/okhttp-test
它包含两个文件夹:
库
这是一个简单的库,包括 mockwebserver 作为依赖项
pom.xml依赖
<dependencies>
...
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>mockwebserver</artifactId>
<version>4.9.1</version>
<exclusions>
<exclusion>
<artifactId>junit</artifactId>
<groupId>junit</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
Maven 依赖关系树
\- com.squareup.okhttp3:mockwebserver:jar:4.9.1:compile
+- com.squareup.okhttp3:okhttp:jar:3.14.9:compile
这已经错了。 Mockwebserver pom 包含 4.9.1 okhttp 工件,但是 3.14.9 显示在 tree
项目
简单Spring 包含 lib 项目的启动应用程序
<dependency>
<groupId>com.example</groupId>
<artifactId>lib</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>test</scope>
</dependency>
Maven 依赖关系树
\- com.example:lib:jar:0.0.1-SNAPSHOT:test
\- com.squareup.okhttp3:mockwebserver:jar:3.14.9:test
\- com.squareup.okhttp3:okhttp:jar:3.14.9:test
\- com.squareup.okio:okio:jar:1.17.2:test
同样的问题在这里。包含 okhttp3:mockwebserver:jar:3.14.9 而不是 4.9.1,因为它在我的库 pom.xml.
中指定我的 xml 配置中是否缺少任何内容?
找到了,它在
中有描述<properties>
<okhttp3.version>4.9.1</okhttp3.version>
</properties>
解决了问题
OkHttp 提供了一个 Maven BOM,您可以使用它来确保版本一致
https://github.com/square/okhttp#releases
Also, we have a bill of materials (BOM) available to help you keep OkHttp artifacts up to date and be sure about version compatibility.
这个例子是gradle,但是你它本来就是maven的特性
https://docs.gradle.org/6.2/userguide/platforms.html#sub:bom_import
dependencies {
// define a BOM and its version
implementation(platform("com.squareup.okhttp3:okhttp-bom:4.9.3"))
// define any required OkHttp artifacts without version
implementation("com.squareup.okhttp3:okhttp")
implementation("com.squareup.okhttp3:logging-interceptor")
}