spring-projects / spring-boot

Spring Boot
https://spring.io/projects/spring-boot
Apache License 2.0
74.57k stars 40.55k forks source link

NoSuchMethodError when using spring-boot-starter-test due to transitive dependency on incomplete clean room implementation of org.json:json #9248

Closed scottishWill closed 7 years ago

scottishWill commented 7 years ago

Hi,

I recently upgraded a large application to "spring boot 1.5.3" and since the upgrade we had a runtime issue with the JSON Lib (org.json) pulled in by "spring-boot 1.5.3 RELEASE". There was no issue with compiling / building but at runtime certain calls to "com.json.JSONObject" threw a error like this:

_org.json.JSONObject.putOnce(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;

After spending alot of time debugging the issue was found to be with spring-boot-starter-test pulling in "android-json" (com.vaadin.external.google). This also has a JSONObject with fully qualified name "com.json.JSONObject" but not the same methods. It was this JSON object that was getting used at runtime and was causing the method not found errors.

We got around the problem by exluding "android-json" from "spring-boot-starter-test" but I suggest it should not be included by default so as to avoid this kind of issue for others.

Thanks, William

philwebb commented 7 years ago

Do you have a complete stacktrace? It looks like this is a similar issue to #8706 and I'm curious if you're also using JsonFluentAssert?

Unfortunately the org.json library has a very unhelpful "don't be evil" clause in its license (see #5929 for background) which causes legal issues for many users. The android-json project is a clean room implementation that has a standard open source license. Many projects are gradually migrating to the android version but unfortunately there are a few compatibility issues.

We can't just drop the dependency because some of our own JSON test utilities require it.

philwebb commented 7 years ago

Since this is the second time this issue has been raised we should look to see if we can add some more documentation at least.

wilkinsona commented 7 years ago

How about a TestExecutionListener that checks for multiple occurrences of JSONObject and warns you? Something like this:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                        

2017-06-06 15:44:27.595  INFO 21071 --- [           main] c.e.DuplicateJsonObjectApplicationTests  : Starting DuplicateJsonObjectApplicationTests on aw-rmbp.home with PID 21071 (started by awilkinson in /Users/awilkinson/dev/workspaces/spring/spring-boot/1.5.x/gh-9398)
2017-06-06 15:44:27.596  INFO 21071 --- [           main] c.e.DuplicateJsonObjectApplicationTests  : No active profile set, falling back to default profiles: default
2017-06-06 15:44:27.620  INFO 21071 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@13c10b87: startup date [Tue Jun 06 15:44:27 BST 2017]; root of context hierarchy
2017-06-06 15:44:27.975  INFO 21071 --- [           main] c.e.DuplicateJsonObjectApplicationTests  : Started DuplicateJsonObjectApplicationTests in 0.581 seconds (JVM running for 1.09)
2017-06-06 15:44:27.978  WARN 21071 --- [           main] DuplicateJsonObjectTestExecutionListener : 

Found multiple occurrences of org.json.JSONObject on the class path:

    jar:file:/Users/awilkinson/.m2/repository/org/json/json/20140107/json-20140107.jar!/org/json/JSONObject.class
    jar:file:/Users/awilkinson/.m2/repository/com/vaadin/external/google/android-json/0.0.20131108.vaadin1/android-json-0.0.20131108.vaadin1.jar!/org/json/JSONObject.class

You may wish to exclude one of them to ensure predictable runtime behaviour

2017-06-06 15:44:28.006  INFO 21071 --- [       Thread-2] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@13c10b87: startup date [Tue Jun 06 15:44:27 BST 2017]; root of context hierarchy
johnjaylward commented 7 years ago

You also have the option to extend the android-json implementation to have the same API. In fact, I did so the other day to extend the JSONException class to have the full constructor list. It was pretty easy to contribute to. Myself, being deep into the JSON-Java code am wary of doing much implementation in Android-json, but others who have not spent much time on either code base shouldn't have an issue bringing the android API up to date.

SollyTaylor commented 6 years ago

IMHO, there is indeed a procedure to tackle this problem:

  1. mvn dependency: tree > dep.log to detect the vaadin dependencies, for example in my project, the dep.log held:

[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building barcoder 0.9.42 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-dependency-plugin:2.10:tree m @ barcoder --- [INFO] com.aossci:barcoder:jar:0.9.42 [INFO] +- org.springframework.boot:spring-boot-starter:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-logging:jar:1.5.7.RELEASE:compile [INFO] | | +- ch.qos.logback:logback-classic:jar:1.1.11:compile [INFO] | | | - ch.qos.logback:logback-core:jar:1.1.11:compile [INFO] | | +- org.slf4j:jcl-over-slf4j:jar:1.7.25:compile [INFO] | | +- org.slf4j:jul-to-slf4j:jar:1.7.25:compile [INFO] | | - org.slf4j:log4j-over-slf4j:jar:1.7.25:compile [INFO] | +- org.springframework:spring-core:jar:4.3.11.RELEASE:compile [INFO] | - org.yaml:snakeyaml:jar:1.17:runtime [INFO] +- org.springframework.boot:spring-boot-starter-test:jar:1.5.7.RELEASE:test [INFO] | +- org.springframework.boot:spring-boot-test:jar:1.5.7.RELEASE:test [INFO] | +- org.springframework.boot:spring-boot-test-autoconfigure:jar:1.5.7.RELEASE:test [INFO] | +- com.jayway.jsonpath:json-path:jar:2.2.0:test [INFO] | | - net.minidev:json-smart:jar:2.2.1:test [INFO] | | - net.minidev:accessors-smart:jar:1.1:test [INFO] | | - org.ow2.asm:asm:jar:5.0.3:test [INFO] | +- org.assertj:assertj-core:jar:2.6.0:test [INFO] | +- org.mockito:mockito-core:jar:1.10.19:test [INFO] | | - org.objenesis:objenesis:jar:2.1:test [INFO] | +- org.hamcrest:hamcrest-core:jar:1.3:test [INFO] | +- org.hamcrest:hamcrest-library:jar:1.3:test [INFO] | +- org.skyscreamer:jsonassert:jar:1.4.0:test [INFO] | - org.springframework:spring-test:jar:4.3.11.RELEASE:test [INFO] +- org.springframework.boot:spring-boot-configuration-processor:jar:1.5.7.RELEASE:compile [INFO] | - com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:compile [INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.5.7.RELEASE:compile ... ... ... [INFO] | - net.jcip:jcip-annotations:jar:1.0:compile [INFO] - com.google.code.findbugs:jsr305:jar:3.0.1:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.146 s [INFO] Finished at: 2018-03-18T09:54:01+08:00 [INFO] Final Memory: 28M/619M [INFO] ------------------------------------------------------------------------


`vaadin` is a dependency of `spring-boot-configuration-processor`, just add exclusion to the dependency:
org.springframework.boot spring-boot-configuration-processor true com.vaadin.external.google android-json

2. redo the dependency: tree cli to resolve the exclusions, got the tree:

[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building barcoder 0.9.42 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-dependency-plugin:2.10:tree m @ barcoder --- [INFO] com.aossci:barcoder:jar:0.9.42 [INFO] +- org.springframework.boot:spring-boot-starter:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-logging:jar:1.5.7.RELEASE:compile [INFO] | | +- ch.qos.logback:logback-classic:jar:1.1.11:compile [INFO] | | | - ch.qos.logback:logback-core:jar:1.1.11:compile [INFO] | | +- org.slf4j:jcl-over-slf4j:jar:1.7.25:compile [INFO] | | +- org.slf4j:jul-to-slf4j:jar:1.7.25:compile [INFO] | | - org.slf4j:log4j-over-slf4j:jar:1.7.25:compile [INFO] | +- org.springframework:spring-core:jar:4.3.11.RELEASE:compile [INFO] | - org.yaml:snakeyaml:jar:1.17:runtime [INFO] +- org.springframework.boot:spring-boot-starter-test:jar:1.5.7.RELEASE:test [INFO] | +- org.springframework.boot:spring-boot-test:jar:1.5.7.RELEASE:test [INFO] | +- org.springframework.boot:spring-boot-test-autoconfigure:jar:1.5.7.RELEASE:test [INFO] | +- com.jayway.jsonpath:json-path:jar:2.2.0:test [INFO] | | - net.minidev:json-smart:jar:2.2.1:test [INFO] | | - net.minidev:accessors-smart:jar:1.1:test [INFO] | | - org.ow2.asm:asm:jar:5.0.3:test [INFO] | +- org.assertj:assertj-core:jar:2.6.0:test [INFO] | +- org.mockito:mockito-core:jar:1.10.19:test [INFO] | | - org.objenesis:objenesis:jar:2.1:test [INFO] | +- org.hamcrest:hamcrest-core:jar:1.3:test [INFO] | +- org.hamcrest:hamcrest-library:jar:1.3:test [INFO] | +- org.skyscreamer:jsonassert:jar:1.4.0:test [INFO] | | -com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test [INFO] | - org.springframework:spring-test:jar:4.3.11.RELEASE:test [INFO] +- org.springframework.boot:spring-boot-configuration-processor:jar:1.5.7.RELEASE:compile ... ... ... [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.154 s [INFO] Finished at: 2018-03-18T09:58:38+08:00 [INFO] Final Memory: 25M/491M [INFO] ------------------------------------------------------------------------

add exclusion:
org.springframework.boot spring-boot-starter-test test com.vaadin.external.google android-json

eventually, all dependencies of `vaadin` are excluded:

[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building barcoder 0.9.42 [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-dependency-plugin:2.10:tree m @ barcoder --- [INFO] com.aossci:barcoder:jar:0.9.42 [INFO] +- org.springframework.boot:spring-boot-starter:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-logging:jar:1.5.7.RELEASE:compile [INFO] | | +- ch.qos.logback:logback-classic:jar:1.1.11:compile [INFO] | | | - ch.qos.logback:logback-core:jar:1.1.11:compile [INFO] | | +- org.slf4j:jcl-over-slf4j:jar:1.7.25:compile [INFO] | | +- org.slf4j:jul-to-slf4j:jar:1.7.25:compile [INFO] | | - org.slf4j:log4j-over-slf4j:jar:1.7.25:compile [INFO] | +- org.springframework:spring-core:jar:4.3.11.RELEASE:compile [INFO] | - org.yaml:snakeyaml:jar:1.17:runtime [INFO] +- org.springframework.boot:spring-boot-starter-test:jar:1.5.7.RELEASE:test [INFO] | +- org.springframework.boot:spring-boot-test:jar:1.5.7.RELEASE:test [INFO] | +- org.springframework.boot:spring-boot-test-autoconfigure:jar:1.5.7.RELEASE:test [INFO] | +- com.jayway.jsonpath:json-path:jar:2.2.0:test [INFO] | | - net.minidev:json-smart:jar:2.2.1:test [INFO] | | - net.minidev:accessors-smart:jar:1.1:test [INFO] | | - org.ow2.asm:asm:jar:5.0.3:test [INFO] | +- org.assertj:assertj-core:jar:2.6.0:test [INFO] | +- org.mockito:mockito-core:jar:1.10.19:test [INFO] | | - org.objenesis:objenesis:jar:2.1:test [INFO] | +- org.hamcrest:hamcrest-core:jar:1.3:test [INFO] | +- org.hamcrest:hamcrest-library:jar:1.3:test [INFO] | +- org.skyscreamer:jsonassert:jar:1.4.0:test [INFO] | - org.springframework:spring-test:jar:4.3.11.RELEASE:test [INFO] +- org.springframework.boot:spring-boot-configuration-processor:jar:1.5.7.RELEASE:compile [INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.5.7.RELEASE:compile [INFO] | | +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.5.20:compile [INFO] | | +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.5.20:compile [INFO] | | - org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.5.20:compile [INFO] | +- org.hibernate:hibernate-validator:jar:5.3.5.Final:compile [INFO] | | +- javax.validation:validation-api:jar:1.1.0.Final:compile [INFO] | | - org.jboss.logging:jboss-logging:jar:3.3.1.Final:compile [INFO] | +- org.springframework:spring-web:jar:4.3.11.RELEASE:compile [INFO] | | - org.springframework:spring-beans:jar:4.3.11.RELEASE:compile [INFO] | - org.springframework:spring-webmvc:jar:4.3.11.RELEASE:compile [INFO] | - org.springframework:spring-expression:jar:4.3.11.RELEASE:compile [INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-aop:jar:1.5.7.RELEASE:compile [INFO] | | - org.aspectj:aspectjweaver:jar:1.8.10:compile [INFO] | +- org.springframework.boot:spring-boot-starter-jdbc:jar:1.5.7.RELEASE:compile [INFO] | | +- org.apache.tomcat:tomcat-jdbc:jar:8.5.20:compile [INFO] | | | - org.apache.tomcat:tomcat-juli:jar:8.5.20:compile [INFO] | | - org.springframework:spring-jdbc:jar:4.3.11.RELEASE:compile [INFO] | +- org.hibernate:hibernate-core:jar:5.0.12.Final:compile [INFO] | | +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile [INFO] | | +- org.javassist:javassist:jar:3.21.0-GA:compile [INFO] | | +- antlr:antlr:jar:2.7.7:compile [INFO] | | +- org.jboss:jandex:jar:2.0.0.Final:compile [INFO] | | +- dom4j:dom4j:jar:1.6.1:compile [INFO] | | - org.hibernate.common:hibernate-commons-annotations:jar:5.0.1.Final:compile [INFO] | +- org.hibernate:hibernate-entitymanager:jar:5.0.12.Final:compile [INFO] | +- javax.transaction:javax.transaction-api:jar:1.2:compile [INFO] | +- org.springframework.data:spring-data-jpa:jar:1.11.7.RELEASE:compile [INFO] | | +- org.springframework.data:spring-data-commons:jar:1.13.7.RELEASE:compile [INFO] | | +- org.springframework:spring-orm:jar:4.3.11.RELEASE:compile [INFO] | | - org.springframework:spring-tx:jar:4.3.11.RELEASE:compile [INFO] | - org.springframework:spring-aspects:jar:4.3.11.RELEASE:compile [INFO] +- org.springframework.boot:spring-boot-starter-security:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework:spring-aop:jar:4.3.11.RELEASE:compile [INFO] | +- org.springframework.security:spring-security-config:jar:4.2.3.RELEASE:compile [INFO] | | - org.springframework.security:spring-security-core:jar:4.2.3.RELEASE:compile [INFO] | - org.springframework.security:spring-security-web:jar:4.2.3.RELEASE:compile [INFO] +- org.json:json:jar:20170516:compile [INFO] +- mysql:mysql-connector-java:jar:5.1.44:compile [INFO] +- org.jetbrains:annotations:jar:16.0.1:compile [INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile [INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile [INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile [INFO] +- com.github.everit-org.json-schema:org.everit.json.schema:jar:1.8.0:compile [INFO] | +- com.google.guava:guava:jar:22.0:compile [INFO] | | +- com.google.errorprone:error_prone_annotations:jar:2.0.18:compile [INFO] | | +- com.google.j2objc:j2objc-annotations:jar:1.1:compile [INFO] | | - org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:compile [INFO] | +- commons-validator:commons-validator:jar:1.6:compile [INFO] | | +- commons-beanutils:commons-beanutils:jar:1.9.3:compile [INFO] | | +- commons-digester:commons-digester:jar:2.1:compile [INFO] | | +- commons-logging:commons-logging:jar:1.2:compile [INFO] | | - commons-collections:commons-collections:jar:3.2.2:compile [INFO] | +- com.damnhandy:handy-uri-templates:jar:2.1.6:compile [INFO] | - com.google.re2j:re2j:jar:1.1:compile [INFO] +- junit:junit:jar:4.12:test [INFO] +- io.springfox:springfox-swagger2:jar:2.7.0:compile [INFO] | +- io.swagger:swagger-annotations:jar:1.5.13:compile [INFO] | +- io.swagger:swagger-models:jar:1.5.13:compile [INFO] | +- io.springfox:springfox-spi:jar:2.7.0:compile [INFO] | | - io.springfox:springfox-core:jar:2.7.0:compile [INFO] | | - net.bytebuddy:byte-buddy:jar:1.6.14:compile [INFO] | +- io.springfox:springfox-schema:jar:2.7.0:compile [INFO] | +- io.springfox:springfox-swagger-common:jar:2.7.0:compile [INFO] | +- io.springfox:springfox-spring-web:jar:2.7.0:compile [INFO] | | - org.reflections:reflections:jar:0.9.11:compile [INFO] | +- com.fasterxml:classmate:jar:1.3.4:compile [INFO] | +- org.slf4j:slf4j-api:jar:1.7.25:compile [INFO] | +- org.springframework.plugin:spring-plugin-core:jar:1.2.0.RELEASE:compile [INFO] | +- org.springframework.plugin:spring-plugin-metadata:jar:1.2.0.RELEASE:compile [INFO] | - org.mapstruct:mapstruct:jar:1.1.0.Final:compile [INFO] +- io.springfox:springfox-swagger-ui:jar:2.7.0:compile [INFO] +- com.mashape.unirest:unirest-java:jar:1.4.9:compile [INFO] | +- org.apache.httpcomponents:httpclient:jar:4.5.3:compile [INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.4.6:compile [INFO] | | - commons-codec:commons-codec:jar:1.10:compile [INFO] | +- org.apache.httpcomponents:httpasyncclient:jar:4.1.3:compile [INFO] | | - org.apache.httpcomponents:httpcore-nio:jar:4.4.6:compile [INFO] | - org.apache.httpcomponents:httpmime:jar:4.5.3:compile [INFO] +- org.apache.commons:commons-lang3:jar:3.6:compile [INFO] +- org.codehaus.groovy:groovy-all:jar:2.4.12:compile [INFO] +- commons-io:commons-io:jar:2.5:compile [INFO] +- org.springframework.boot:spring-boot-starter-cache:jar:1.5.7.RELEASE:compile [INFO] | +- org.springframework:spring-context:jar:4.3.11.RELEASE:compile [INFO] | - org.springframework:spring-context-support:jar:4.3.11.RELEASE:compile [INFO] - io.minio:minio:jar:3.0.12:compile [INFO] +- com.google.http-client:google-http-client-xml:jar:1.20.0:compile [INFO] | +- com.google.http-client:google-http-client:jar:1.20.0:compile [INFO] | - xpp3:xpp3:jar:1.1.4c:compile [INFO] +- com.squareup.okhttp3:okhttp:jar:3.7.0:compile [INFO] +- com.squareup.okio:okio:jar:1.12.0:compile [INFO] +- joda-time:joda-time:jar:2.9.9:compile [INFO] +- com.google.code.findbugs:annotations:jar:3.0.1:compile [INFO] | - net.jcip:jcip-annotations:jar:1.0:compile [INFO] - com.google.code.findbugs:jsr305:jar:3.0.1:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.106 s [INFO] Finished at: 2018-03-18T10:01:39+08:00 [INFO] Final Memory: 25M/491M [INFO] ------------------------------------------------------------------------

snicoll commented 6 years ago

@SollyTaylor or you could simply upgrade to the latest 1.5.x that doesn't bring that dependency anymore.

SollyTaylor commented 6 years ago

@snicoll I test the upgraded versions, 1.5.9.RELEASE and 1.5.10.RELEASE are still complaining the vaadin dependency issues. while the version 1.5.11-build-snapshot is not ready for production I think. I have to exclude the vaadin dependencies explicitly.

Here is the dep.log of mvn dependency:tree > dep.log

[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] Building barcoder 0.9.42
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ barcoder ---
[INFO] com.aossci:barcoder:jar:0.9.42
[INFO] +- org.springframework.boot:spring-boot-starter:jar:1.5.10.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot:jar:1.5.10.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-autoconfigure:jar:1.5.10.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-logging:jar:1.5.10.RELEASE:compile
[INFO] |  |  +- ch.qos.logback:logback-classic:jar:1.1.11:compile
[INFO] |  |  |  \- ch.qos.logback:logback-core:jar:1.1.11:compile
[INFO] |  |  +- org.slf4j:jcl-over-slf4j:jar:1.7.25:compile
[INFO] |  |  +- org.slf4j:jul-to-slf4j:jar:1.7.25:compile
[INFO] |  |  \- org.slf4j:log4j-over-slf4j:jar:1.7.25:compile
[INFO] |  +- org.springframework:spring-core:jar:4.3.14.RELEASE:compile
[INFO] |  \- org.yaml:snakeyaml:jar:1.17:runtime
[INFO] +- org.springframework.boot:spring-boot-starter-test:jar:1.5.10.RELEASE:test
[INFO] |  +- org.springframework.boot:spring-boot-test:jar:1.5.10.RELEASE:test
[INFO] |  +- org.springframework.boot:spring-boot-test-autoconfigure:jar:1.5.10.RELEASE:test
[INFO] |  +- com.jayway.jsonpath:json-path:jar:2.2.0:test
[INFO] |  |  \- net.minidev:json-smart:jar:2.2.1:test
[INFO] |  |     \- net.minidev:accessors-smart:jar:1.1:test
[INFO] |  |        \- org.ow2.asm:asm:jar:5.0.3:test
[INFO] |  +- org.assertj:assertj-core:jar:2.6.0:test
[INFO] |  +- org.mockito:mockito-core:jar:1.10.19:test
[INFO] |  |  \- org.objenesis:objenesis:jar:2.1:test
[INFO] |  +- org.hamcrest:hamcrest-core:jar:1.3:test
[INFO] |  +- org.hamcrest:hamcrest-library:jar:1.3:test
[INFO] |  +- org.skyscreamer:jsonassert:jar:1.4.0:test
[INFO] |  |  \- ****com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test
[INFO] |  \- org.springframework:spring-test:jar:4.3.14.RELEASE:test
[INFO] +- org.springframework.boot:spring-boot-configuration-processor:jar:1.5.10.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.5.10.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.5.10.RELEASE:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-core:jar:8.5.27:compile
[INFO] |  |  |  \- org.apache.tomcat:tomcat-annotations-api:jar:8.5.27:compile
[INFO] |  |  +- org.apache.tomcat.embed:tomcat-embed-el:jar:8.5.27:compile
[INFO] |  |  \- org.apache.tomcat.embed:tomcat-embed-websocket:jar:8.5.27:compile
[INFO] |  +- org.hibernate:hibernate-validator:jar:5.3.6.Final:compile
[INFO] |  |  +- javax.validation:validation-api:jar:1.1.0.Final:compile
[INFO] |  |  \- org.jboss.logging:jboss-logging:jar:3.3.1.Final:compile
[INFO] |  +- org.springframework:spring-web:jar:4.3.14.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-beans:jar:4.3.14.RELEASE:compile
[INFO] |  \- org.springframework:spring-webmvc:jar:4.3.14.RELEASE:compile
[INFO] |     \- org.springframework:spring-expression:jar:4.3.14.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:1.5.10.RELEASE:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-aop:jar:1.5.10.RELEASE:compile
[INFO] |  |  \- org.aspectj:aspectjweaver:jar:1.8.13:compile
[INFO] |  +- org.springframework.boot:spring-boot-starter-jdbc:jar:1.5.10.RELEASE:compile
[INFO] |  |  +- org.apache.tomcat:tomcat-jdbc:jar:8.5.27:compile
[INFO] |  |  |  \- org.apache.tomcat:tomcat-juli:jar:8.5.27:compile
[INFO] |  |  \- org.springframework:spring-jdbc:jar:4.3.14.RELEASE:compile
[INFO] |  +- org.hibernate:hibernate-core:jar:5.0.12.Final:compile
[INFO] |  |  +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] |  |  +- org.javassist:javassist:jar:3.21.0-GA:compile
[INFO] |  |  +- antlr:antlr:jar:2.7.7:compile
[INFO] |  |  +- org.jboss:jandex:jar:2.0.0.Final:compile
[INFO] |  |  +- dom4j:dom4j:jar:1.6.1:compile
[INFO] |  |  \- org.hibernate.common:hibernate-commons-annotations:jar:5.0.1.Final:compile
[INFO] |  +- org.hibernate:hibernate-entitymanager:jar:5.0.12.Final:compile
[INFO] |  +- javax.transaction:javax.transaction-api:jar:1.2:compile
[INFO] |  +- org.springframework.data:spring-data-jpa:jar:1.11.10.RELEASE:compile
[INFO] |  |  +- org.springframework.data:spring-data-commons:jar:1.13.10.RELEASE:compile
[INFO] |  |  +- org.springframework:spring-orm:jar:4.3.14.RELEASE:compile
[INFO] |  |  \- org.springframework:spring-tx:jar:4.3.14.RELEASE:compile
[INFO] |  \- org.springframework:spring-aspects:jar:4.3.14.RELEASE:compile
[INFO] +- org.springframework.boot:spring-boot-starter-security:jar:1.5.10.RELEASE:compile
[INFO] |  +- org.springframework:spring-aop:jar:4.3.14.RELEASE:compile
[INFO] |  +- org.springframework.security:spring-security-config:jar:4.2.4.RELEASE:compile
[INFO] |  |  \- org.springframework.security:spring-security-core:jar:4.2.4.RELEASE:compile
[INFO] |  \- org.springframework.security:spring-security-web:jar:4.2.4.RELEASE:compile
[INFO] +- org.json:json:jar:20170516:compile
[INFO] +- mysql:mysql-connector-java:jar:5.1.45:compile
[INFO] +- org.jetbrains:annotations:jar:16.0.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.9.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.1:compile
[INFO] +- com.github.everit-org.json-schema:org.everit.json.schema:jar:1.8.0:compile
[INFO] |  +- com.google.guava:guava:jar:22.0:compile
[INFO] |  |  +- com.google.errorprone:error_prone_annotations:jar:2.0.18:compile
[INFO] |  |  +- com.google.j2objc:j2objc-annotations:jar:1.1:compile
[INFO] |  |  \- org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:compile
[INFO] |  +- commons-validator:commons-validator:jar:1.6:compile
[INFO] |  |  +- commons-beanutils:commons-beanutils:jar:1.9.3:compile
[INFO] |  |  +- commons-digester:commons-digester:jar:2.1:compile
[INFO] |  |  +- commons-logging:commons-logging:jar:1.2:compile
[INFO] |  |  \- commons-collections:commons-collections:jar:3.2.2:compile
[INFO] |  +- com.damnhandy:handy-uri-templates:jar:2.1.6:compile
[INFO] |  \- com.google.re2j:re2j:jar:1.1:compile
[INFO] +- junit:junit:jar:4.12:test
[INFO] +- io.springfox:springfox-swagger2:jar:2.7.0:compile
[INFO] |  +- io.swagger:swagger-annotations:jar:1.5.13:compile
[INFO] |  +- io.swagger:swagger-models:jar:1.5.13:compile
[INFO] |  +- io.springfox:springfox-spi:jar:2.7.0:compile
[INFO] |  |  \- io.springfox:springfox-core:jar:2.7.0:compile
[INFO] |  |     \- net.bytebuddy:byte-buddy:jar:1.6.14:compile
[INFO] |  +- io.springfox:springfox-schema:jar:2.7.0:compile
[INFO] |  +- io.springfox:springfox-swagger-common:jar:2.7.0:compile
[INFO] |  +- io.springfox:springfox-spring-web:jar:2.7.0:compile
[INFO] |  |  \- org.reflections:reflections:jar:0.9.11:compile
[INFO] |  +- com.fasterxml:classmate:jar:1.3.4:compile
[INFO] |  +- org.slf4j:slf4j-api:jar:1.7.25:compile
[INFO] |  +- org.springframework.plugin:spring-plugin-core:jar:1.2.0.RELEASE:compile
[INFO] |  +- org.springframework.plugin:spring-plugin-metadata:jar:1.2.0.RELEASE:compile
[INFO] |  \- org.mapstruct:mapstruct:jar:1.1.0.Final:compile
[INFO] +- io.springfox:springfox-swagger-ui:jar:2.7.0:compile
[INFO] +- com.mashape.unirest:unirest-java:jar:1.4.9:compile
[INFO] |  +- org.apache.httpcomponents:httpclient:jar:4.5.5:compile
[INFO] |  |  +- org.apache.httpcomponents:httpcore:jar:4.4.9:compile
[INFO] |  |  \- commons-codec:commons-codec:jar:1.10:compile
[INFO] |  +- org.apache.httpcomponents:httpasyncclient:jar:4.1.3:compile
[INFO] |  |  \- org.apache.httpcomponents:httpcore-nio:jar:4.4.6:compile
[INFO] |  \- org.apache.httpcomponents:httpmime:jar:4.5.5:compile
[INFO] +- org.apache.commons:commons-lang3:jar:3.6:compile
[INFO] +- org.codehaus.groovy:groovy-all:jar:2.4.12:compile
[INFO] +- commons-io:commons-io:jar:2.5:compile
[INFO] +- org.springframework.boot:spring-boot-starter-cache:jar:1.5.10.RELEASE:compile
[INFO] |  +- org.springframework:spring-context:jar:4.3.14.RELEASE:compile
[INFO] |  \- org.springframework:spring-context-support:jar:4.3.14.RELEASE:compile
[INFO] \- io.minio:minio:jar:3.0.12:compile
[INFO]    +- com.google.http-client:google-http-client-xml:jar:1.20.0:compile
[INFO]    |  +- com.google.http-client:google-http-client:jar:1.20.0:compile
[INFO]    |  \- xpp3:xpp3:jar:1.1.4c:compile
[INFO]    +- com.squareup.okhttp3:okhttp:jar:3.7.0:compile
[INFO]    +- com.squareup.okio:okio:jar:1.12.0:compile
[INFO]    +- joda-time:joda-time:jar:2.9.9:compile
[INFO]    +- com.google.code.findbugs:annotations:jar:3.0.1:compile
[INFO]    |  \- net.jcip:jcip-annotations:jar:1.0:compile
[INFO]    \- com.google.code.findbugs:jsr305:jar:3.0.1:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.650 s
[INFO] Finished at: 2018-03-19T08:14:06+08:00
[INFO] Final Memory: 26M/216M
[INFO] ------------------------------------------------------------------------
snicoll commented 6 years ago

@SollyTaylor read the tree you've pasted. The dependency comes from org.skyscreamer:jsonassert:jar:1.4.0:test (nothing to do with the annotation processor). If you have more questions, please ask on StackOverflow or Gitter.