【发布时间】:2018-12-20 15:12:48
【问题描述】:
在我的pom.xml 我有
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20170516</version>
</dependency>
我的程序需要并使用这个版本的 om JSON。
import org.json.JSONObject;
当我放入时
final JsonObject jsonObject = new JsonObject();
System.out.println( jsonObject.getClass().getPackage().getImplementationVersion());
我明白了
20170516
好的,好的。 (注意:这是程序的一个类,不是测试!)
现在我使用mvn test 运行我的单元测试(Mockito、JUnit)。我收到一个错误,它与 JSONObject 版本有关。日志说:
0.0.20131108.vaadin1
我发现,这个版本来自这个依赖
<dependency>
<groupId>org.skyscreamer</groupId>
<artifactId>jsonassert</artifactId>
<version>1.5.0</version>
<scope>test</scope>
</dependency>
如果我删除它,我的测试工作正常。
但是现在其他测试失败了,它使用了这个依赖项
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
在 pom.xml 中
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.4.RELEASE</version>
</dependency>
如何配置maven,程序使用JSON版本20170516,但是spring-test仍然可以使用jsonassert?
即使几乎是 sam 的名字,我不认为这是重复的 * two versions of dependencies in maven
-- 编辑 1
mvn dependency:tree | grep json
[INFO] +- org.skyscreamer:jsonassert:jar:1.5.0:test
[INFO] | \- com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
[INFO] +- com.jayway.jsonpath:json-path-assert:jar:2.2.0:test
[INFO] | +- com.jayway.jsonpath:json-path:jar:2.2.0:test
[INFO] | | \- net.minidev:json-smart:jar:2.2.1:test
[INFO] +- org.json:json:jar:20170516:compile
【问题讨论】:
-
"如何配置 maven,程序使用 JSON 版本 20170516,但 spring-test 仍然可以使用 jsonassert" maven dependency scope 你在找什么?您可以在测试中使用某些版本,在编译和构建中使用其他版本。
-
不,这没有帮助。正如我所写,使用新版本 JsonObject 的关键点是在类中,而不是在该类的测试中。