В моем 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
Хорошо, хорошо.(Примечание: это класс программы, а не тест!)
Теперь я запускаю свой Unittest (Mockito, JUnit) с mvn test
.Я получаю ошибку, связанную с версией 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, я не думаю, что это дубликат * двух версий зависимостей в 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