This commit updates URLs to prefer the https protocol. Redirects are not followed to avoid accidentally expanding intentionally shortened URLs (i.e. if using a URL shortener). # HTTP URLs that Could Not Be Fixed These URLs were unable to be fixed. Please review them to see if they can be manually resolved. * [ ] http://aopalliance.sourceforge.net (200) with 3 occurrences could not be migrated: ([https](https://aopalliance.sourceforge.net) result AnnotatedConnectException). * [ ] http://checkstyle.sourceforge.net/ (200) with 5 occurrences could not be migrated: ([https](https://checkstyle.sourceforge.net/) result AnnotatedConnectException). * [ ] http://checkstyle.sourceforge.net/config_blocks.html (200) with 1 occurrences could not be migrated: ([https](https://checkstyle.sourceforge.net/config_blocks.html) result AnnotatedConnectException). * [ ] http://checkstyle.sourceforge.net/config_coding.html (200) with 3 occurrences could not be migrated: ([https](https://checkstyle.sourceforge.net/config_coding.html) result AnnotatedConnectException). * [ ] http://checkstyle.sourceforge.net/config_design.html (200) with 1 occurrences could not be migrated: ([https](https://checkstyle.sourceforge.net/config_design.html) result AnnotatedConnectException). * [ ] http://checkstyle.sourceforge.net/config_javadoc.html (200) with 4 occurrences could not be migrated: ([https](https://checkstyle.sourceforge.net/config_javadoc.html) result AnnotatedConnectException). * [ ] http://checkstyle.sourceforge.net/config_misc.html (200) with 1 occurrences could not be migrated: ([https](https://checkstyle.sourceforge.net/config_misc.html) result AnnotatedConnectException). * [ ] http://checkstyle.sourceforge.net/config_naming.html (200) with 1 occurrences could not be migrated: ([https](https://checkstyle.sourceforge.net/config_naming.html) result AnnotatedConnectException). * [ ] http://checkstyle.sourceforge.net/config_sizes.html (200) with 2 occurrences could not be migrated: ([https](https://checkstyle.sourceforge.net/config_sizes.html) result AnnotatedConnectException). * [ ] http://checkstyle.sourceforge.net/config_whitespace.html (200) with 2 occurrences could not be migrated: ([https](https://checkstyle.sourceforge.net/config_whitespace.html) result AnnotatedConnectException). * [ ] http://codearte.io (200) with 16 occurrences could not be migrated: ([https](https://codearte.io) result SSLHandshakeException). * [ ] http://docbkx-tools.sourceforge.net/docbkx-maven-plugin/ (200) with 1 occurrences could not be migrated: ([https](https://docbkx-tools.sourceforge.net/docbkx-maven-plugin/) result AnnotatedConnectException). * [ ] http://erik.eae.net/archives/2007/07/27/18.54.15/ (200) with 1 occurrences could not be migrated: ([https](https://erik.eae.net/archives/2007/07/27/18.54.15/) result SSLHandshakeException). * [ ] http://findbugs.sourceforge.net/ (200) with 3 occurrences could not be migrated: ([https](https://findbugs.sourceforge.net/) result AnnotatedConnectException). * [ ] http://groovy-lang.org (200) with 31 occurrences could not be migrated: ([https](https://groovy-lang.org) result SSLProtocolException). * [ ] http://groovy-lang.org/json.html (200) with 46 occurrences could not be migrated: ([https](https://groovy-lang.org/json.html) result SSLProtocolException). * [ ] http://hsqldb.org (200) with 1 occurrences could not be migrated: ([https](https://hsqldb.org) result SSLHandshakeException). * [ ] http://hsqldb.org/web/hsqlLicense.html (200) with 1 occurrences could not be migrated: ([https](https://hsqldb.org/web/hsqlLicense.html) result SSLHandshakeException). * [ ] http://htmlunit.sourceforge.net (200) with 1 occurrences could not be migrated: ([https](https://htmlunit.sourceforge.net) result AnnotatedConnectException). * [ ] http://javascript.nwbox.com/IEContentLoaded/ (200) with 1 occurrences could not be migrated: ([https](https://javascript.nwbox.com/IEContentLoaded/) result SSLHandshakeException). * [ ] http://jtds.sourceforge.net (200) with 1 occurrences could not be migrated: ([https](https://jtds.sourceforge.net) result AnnotatedConnectException). * [ ] http://nekohtml.sourceforge.net/ (200) with 1 occurrences could not be migrated: ([https](https://nekohtml.sourceforge.net/) result AnnotatedConnectException). * [ ] http://objenesis.org (200) with 1 occurrences could not be migrated: ([https](https://objenesis.org) result SSLHandshakeException). * [ ] http://partners.com (200) with 54 occurrences could not be migrated: ([https](https://partners.com) result SSLHandshakeException). * [ ] http://planet.apache.org/ (200) with 6 occurrences could not be migrated: ([https](https://planet.apache.org/) result ConnectTimeoutException). * [ ] http://rest-assured.io/ (200) with 16 occurrences could not be migrated: ([https](https://rest-assured.io/) result SSLHandshakeException). * [ ] http://spockframework.org (200) with 2 occurrences could not be migrated: ([https](https://spockframework.org) result SSLHandshakeException). * [ ] http://spockframework.org/ (200) with 3 occurrences could not be migrated: ([https](https://spockframework.org/) result SSLHandshakeException). * [ ] http://toomuchcoding.com/blog/categories/accurest/ (200) with 16 occurrences could not be migrated: ([https](https://toomuchcoding.com/blog/categories/accurest/) result SSLHandshakeException). * [ ] http://toomuchcoding.com/blog/categories/spring-cloud-contract/ (200) with 16 occurrences could not be migrated: ([https](https://toomuchcoding.com/blog/categories/spring-cloud-contract/) result SSLHandshakeException). * [ ] http://wiremock.org (200) with 24 occurrences could not be migrated: ([https](https://wiremock.org) result SSLHandshakeException). * [ ] http://wiremock.org/docs/stateful-behaviour/ (200) with 10 occurrences could not be migrated: ([https](https://wiremock.org/docs/stateful-behaviour/) result SSLHandshakeException). * [ ] http://wiremock.org/docs/stubbing/ (200) with 7 occurrences could not be migrated: ([https](https://wiremock.org/docs/stubbing/) result SSLHandshakeException). * [ ] http://wiremock.org/stateful-behaviour.html (200) with 22 occurrences could not be migrated: ([https](https://wiremock.org/stateful-behaviour.html) result SSLHandshakeException). * [ ] http://wiremock.org/stubbing.html (200) with 16 occurrences could not be migrated: ([https](https://wiremock.org/stubbing.html) result SSLHandshakeException). * [ ] http://www.jdom.org (200) with 1 occurrences could not be migrated: ([https](https://www.jdom.org) result AnnotatedConnectException). * [ ] http://www.saxproject.org/copying.html (200) with 1 occurrences could not be migrated: ([https](https://www.saxproject.org/copying.html) result AnnotatedConnectException). * [ ] http://blindsignals.com/index.php/2009/07/jquery-delay/ (301) with 1 occurrences could not be migrated: ([https](https://blindsignals.com/index.php/2009/07/jquery-delay/) result SSLHandshakeException). * [ ] http://192.168.0.100:8081/artifactory/libs-release-local (403) with 14 occurrences could not be migrated: ([https](https://192.168.0.100:8081/artifactory/libs-release-local) result ConnectTimeoutException). * [ ] http://takari.io/takari-lifecycle/takari-lifecycle-plugin (404) with 9 occurrences could not be migrated: ([https](https://takari.io/takari-lifecycle/takari-lifecycle-plugin) result ConnectTimeoutException). * [ ] http://takari.io/takari-plugin-testing-project/takari-plugin-integration-testing (404) with 3 occurrences could not be migrated: ([https](https://takari.io/takari-plugin-testing-project/takari-plugin-integration-testing) result ConnectTimeoutException). * [ ] http://takari.io/takari-plugin-testing-project/takari-plugin-testing (404) with 3 occurrences could not be migrated: ([https](https://takari.io/takari-plugin-testing-project/takari-plugin-testing) result ConnectTimeoutException). * [ ] http://toomuchcoding.com/blog/2015/09/27/microservice-deployment/ (404) with 2 occurrences could not be migrated: ([https](https://toomuchcoding.com/blog/2015/09/27/microservice-deployment/) result SSLHandshakeException). * [ ] http://www.seamframework.org/Weld/cdi-api (404) with 3 occurrences could not be migrated: ([https](https://www.seamframework.org/Weld/cdi-api) result SSLHandshakeException). * [ ] http://xstream.codehaus.com/license.html (404) with 1 occurrences could not be migrated: ([https](https://xstream.codehaus.com/license.html) result ConnectTimeoutException). # Fixed URLs ## Fixed But Review Recommended These URLs were fixed, but the https status was not OK. However, the https status was the same as the http request or http redirected to an https URL, so they were migrated. Your review is recommended. * [ ] http://fontawesome.io (301) with 4 occurrences migrated to: https://fontawesome.com?from=io ([https](https://fontawesome.io) result AnnotatedConnectException). * [ ] http://freemarker.org/ (301) with 1 occurrences migrated to: https://freemarker.apache.org/ ([https](https://freemarker.org/) result ConnectTimeoutException). * [ ] http://www.ultraq.net.nz/programming/thymeleaf-layout-dialect/ (302) with 1 occurrences migrated to: https://github.com/ultraq/thymeleaf-layout-dialect/ ([https](https://www.ultraq.net.nz/programming/thymeleaf-layout-dialect/) result ConnectTimeoutException). * [ ] http://jsperf.com/getall-vs-sizzle/2 (301) with 1 occurrences migrated to: https://jsperf.com/getall-vs-sizzle/2 ([https](https://jsperf.com/getall-vs-sizzle/2) result ReadTimeoutException). * [ ] http://webjars.org (301) with 5 occurrences migrated to: https://www.webjars.org ([https](https://webjars.org) result SSLHandshakeException). * [ ] http://zenorocha.mit-license.org (301) with 1 occurrences migrated to: https://zenorocha.mit-license.org/ ([https](https://zenorocha.mit-license.org) result NullPointerException). * [ ] http://wiki.ecmascript.org/doku.php?id=harmony:egal (ConnectTimeoutException) with 1 occurrences migrated to: https://wiki.ecmascript.org/doku.php?id=harmony:egal ([https](https://wiki.ecmascript.org/doku.php?id=harmony:egal) result ConnectTimeoutException). * [ ] http://www.w3.org/TR/html4/loose.dtd (ReadTimeoutException) with 1 occurrences migrated to: https://www.w3.org/TR/html4/loose.dtd ([https](https://www.w3.org/TR/html4/loose.dtd) result ReadTimeoutException). * [ ] http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd (ReadTimeoutException) with 24 occurrences migrated to: https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd ([https](https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd) result ReadTimeoutException). * [ ] http://codehaus.org/xstream-parent/xstream/ (UnknownHostException) with 1 occurrences migrated to: https://codehaus.org/xstream-parent/xstream/ ([https](https://codehaus.org/xstream-parent/xstream/) result UnknownHostException). * [ ] http://dist.codehaus.org/janino/new_bsd_license.txt (UnknownHostException) with 1 occurrences migrated to: https://dist.codehaus.org/janino/new_bsd_license.txt ([https](https://dist.codehaus.org/janino/new_bsd_license.txt) result UnknownHostException). * [ ] http://docs.codehaus.org/display/BTM/Home/btm (UnknownHostException) with 1 occurrences migrated to: https://docs.codehaus.org/display/BTM/Home/btm ([https](https://docs.codehaus.org/display/BTM/Home/btm) result UnknownHostException). * [ ] http://docs.codehaus.org/display/JANINO/Home/janino (UnknownHostException) with 1 occurrences migrated to: https://docs.codehaus.org/display/JANINO/Home/janino ([https](https://docs.codehaus.org/display/JANINO/Home/janino) result UnknownHostException). * [ ] http://foo.bar (UnknownHostException) with 14 occurrences migrated to: https://foo.bar ([https](https://foo.bar) result UnknownHostException). * [ ] http://forge.sonatype.com/spice-parent/plexus-build-api/ (UnknownHostException) with 3 occurrences migrated to: https://forge.sonatype.com/spice-parent/plexus-build-api/ ([https](https://forge.sonatype.com/spice-parent/plexus-build-api/) result UnknownHostException). * [ ] http://jaxen.codehaus.org/ (UnknownHostException) with 1 occurrences migrated to: https://jaxen.codehaus.org/ ([https](https://jaxen.codehaus.org/) result UnknownHostException). * [ ] http://jaxen.codehaus.org/license.html (UnknownHostException) with 1 occurrences migrated to: https://jaxen.codehaus.org/license.html ([https](https://jaxen.codehaus.org/license.html) result UnknownHostException). * [ ] http://metrics.codahale.com/metrics-core/ (UnknownHostException) with 1 occurrences migrated to: https://metrics.codahale.com/metrics-core/ ([https](https://metrics.codahale.com/metrics-core/) result UnknownHostException). * [ ] http://metrics.codahale.com/metrics-ganglia/ (UnknownHostException) with 1 occurrences migrated to: https://metrics.codahale.com/metrics-ganglia/ ([https](https://metrics.codahale.com/metrics-ganglia/) result UnknownHostException). * [ ] http://metrics.codahale.com/metrics-graphite/ (UnknownHostException) with 1 occurrences migrated to: https://metrics.codahale.com/metrics-graphite/ ([https](https://metrics.codahale.com/metrics-graphite/) result UnknownHostException). * [ ] http://metrics.codahale.com/metrics-servlets/ (UnknownHostException) with 1 occurrences migrated to: https://metrics.codahale.com/metrics-servlets/ ([https](https://metrics.codahale.com/metrics-servlets/) result UnknownHostException). * [ ] http://mojo.codehaus.org/animal-sniffer-parent/animal-sniffer-maven-plugin (UnknownHostException) with 2 occurrences migrated to: https://mojo.codehaus.org/animal-sniffer-parent/animal-sniffer-maven-plugin ([https](https://mojo.codehaus.org/animal-sniffer-parent/animal-sniffer-maven-plugin) result UnknownHostException). * [ ] http://plexus.codehaus.org/plexus-archiver/ (UnknownHostException) with 3 occurrences migrated to: https://plexus.codehaus.org/plexus-archiver/ ([https](https://plexus.codehaus.org/plexus-archiver/) result UnknownHostException). * [ ] http://plexus.codehaus.org/plexus-classworlds/ (UnknownHostException) with 3 occurrences migrated to: https://plexus.codehaus.org/plexus-classworlds/ ([https](https://plexus.codehaus.org/plexus-classworlds/) result UnknownHostException). * [ ] http://plexus.codehaus.org/plexus-components/plexus-interpolation (UnknownHostException) with 3 occurrences migrated to: https://plexus.codehaus.org/plexus-components/plexus-interpolation ([https](https://plexus.codehaus.org/plexus-components/plexus-interpolation) result UnknownHostException). * [ ] http://plexus.codehaus.org/plexus-containers/plexus-component-annotations/ (UnknownHostException) with 3 occurrences migrated to: https://plexus.codehaus.org/plexus-containers/plexus-component-annotations/ ([https](https://plexus.codehaus.org/plexus-containers/plexus-component-annotations/) result UnknownHostException). * [ ] http://plexus.codehaus.org/plexus-containers/plexus-component-metadata/ (UnknownHostException) with 8 occurrences migrated to: https://plexus.codehaus.org/plexus-containers/plexus-component-metadata/ ([https](https://plexus.codehaus.org/plexus-containers/plexus-component-metadata/) result UnknownHostException). * [ ] http://plexus.codehaus.org/plexus-io/ (UnknownHostException) with 3 occurrences migrated to: https://plexus.codehaus.org/plexus-io/ ([https](https://plexus.codehaus.org/plexus-io/) result UnknownHostException). * [ ] http://plexus.codehaus.org/plexus-utils (UnknownHostException) with 3 occurrences migrated to: https://plexus.codehaus.org/plexus-utils ([https](https://plexus.codehaus.org/plexus-utils) result UnknownHostException). * [ ] http://spice.sonatype.org/plexus-cipher (UnknownHostException) with 3 occurrences migrated to: https://spice.sonatype.org/plexus-cipher ([https](https://spice.sonatype.org/plexus-cipher) result UnknownHostException). * [ ] http://spice.sonatype.org/plexus-sec-dispatcher (UnknownHostException) with 3 occurrences migrated to: https://spice.sonatype.org/plexus-sec-dispatcher ([https](https://spice.sonatype.org/plexus-sec-dispatcher) result UnknownHostException). * [ ] http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html (UnknownHostException) with 1 occurrences migrated to: https://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html ([https](https://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html) result UnknownHostException). * [ ] http://wiki.fasterxml.com/JacksonExtensionXmlDataBinding (UnknownHostException) with 1 occurrences migrated to: https://wiki.fasterxml.com/JacksonExtensionXmlDataBinding ([https](https://wiki.fasterxml.com/JacksonExtensionXmlDataBinding) result UnknownHostException). * [ ] http://wiki.fasterxml.com/JacksonModuleJSR310 (UnknownHostException) with 1 occurrences migrated to: https://wiki.fasterxml.com/JacksonModuleJSR310 ([https](https://wiki.fasterxml.com/JacksonModuleJSR310) result UnknownHostException). * [ ] http://wiki.fasterxml.com/JacksonModuleJoda (UnknownHostException) with 1 occurrences migrated to: https://wiki.fasterxml.com/JacksonModuleJoda ([https](https://wiki.fasterxml.com/JacksonModuleJoda) result UnknownHostException). * [ ] http://www.aspectj.org (UnknownHostException) with 3 occurrences migrated to: https://www.aspectj.org ([https](https://www.aspectj.org) result UnknownHostException). * [ ] http://www.blog.project13.pl (UnknownHostException) with 5 occurrences migrated to: https://www.blog.project13.pl ([https](https://www.blog.project13.pl) result UnknownHostException). * [ ] http://www.mockito.org (UnknownHostException) with 1 occurrences migrated to: https://www.mockito.org ([https](https://www.mockito.org) result UnknownHostException). * [ ] http://activemq.apache.org/activemq-amqp (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-amqp ([https](https://activemq.apache.org/activemq-amqp) result 404). * [ ] http://activemq.apache.org/activemq-blueprint (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-blueprint ([https](https://activemq.apache.org/activemq-blueprint) result 404). * [ ] http://activemq.apache.org/activemq-broker (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-broker ([https](https://activemq.apache.org/activemq-broker) result 404). * [ ] http://activemq.apache.org/activemq-camel (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-camel ([https](https://activemq.apache.org/activemq-camel) result 404). * [ ] http://activemq.apache.org/activemq-client (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-client ([https](https://activemq.apache.org/activemq-client) result 404). * [ ] http://activemq.apache.org/activemq-console (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-console ([https](https://activemq.apache.org/activemq-console) result 404). * [ ] http://activemq.apache.org/activemq-http (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-http ([https](https://activemq.apache.org/activemq-http) result 404). * [ ] http://activemq.apache.org/activemq-jaas (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-jaas ([https](https://activemq.apache.org/activemq-jaas) result 404). * [ ] http://activemq.apache.org/activemq-jdbc-store (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-jdbc-store ([https](https://activemq.apache.org/activemq-jdbc-store) result 404). * [ ] http://activemq.apache.org/activemq-jms-pool (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-jms-pool ([https](https://activemq.apache.org/activemq-jms-pool) result 404). * [ ] http://activemq.apache.org/activemq-kahadb-store (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-kahadb-store ([https](https://activemq.apache.org/activemq-kahadb-store) result 404). * [ ] http://activemq.apache.org/activemq-karaf (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-karaf ([https](https://activemq.apache.org/activemq-karaf) result 404). * [ ] http://activemq.apache.org/activemq-leveldb-store (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-leveldb-store ([https](https://activemq.apache.org/activemq-leveldb-store) result 404). * [ ] http://activemq.apache.org/activemq-log4j-appender (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-log4j-appender ([https](https://activemq.apache.org/activemq-log4j-appender) result 404). * [ ] http://activemq.apache.org/activemq-mqtt (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-mqtt ([https](https://activemq.apache.org/activemq-mqtt) result 404). * [ ] http://activemq.apache.org/activemq-openwire-generator (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-openwire-generator ([https](https://activemq.apache.org/activemq-openwire-generator) result 404). * [ ] http://activemq.apache.org/activemq-openwire-legacy (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-openwire-legacy ([https](https://activemq.apache.org/activemq-openwire-legacy) result 404). * [ ] http://activemq.apache.org/activemq-osgi (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-osgi ([https](https://activemq.apache.org/activemq-osgi) result 404). * [ ] http://activemq.apache.org/activemq-partition (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-partition ([https](https://activemq.apache.org/activemq-partition) result 404). * [ ] http://activemq.apache.org/activemq-pool (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-pool ([https](https://activemq.apache.org/activemq-pool) result 404). * [ ] http://activemq.apache.org/activemq-ra (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-ra ([https](https://activemq.apache.org/activemq-ra) result 404). * [ ] http://activemq.apache.org/activemq-run (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-run ([https](https://activemq.apache.org/activemq-run) result 404). * [ ] http://activemq.apache.org/activemq-runtime-config (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-runtime-config ([https](https://activemq.apache.org/activemq-runtime-config) result 404). * [ ] http://activemq.apache.org/activemq-shiro (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-shiro ([https](https://activemq.apache.org/activemq-shiro) result 404). * [ ] http://activemq.apache.org/activemq-spring (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-spring ([https](https://activemq.apache.org/activemq-spring) result 404). * [ ] http://activemq.apache.org/activemq-stomp (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-stomp ([https](https://activemq.apache.org/activemq-stomp) result 404). * [ ] http://activemq.apache.org/activemq-web (404) with 1 occurrences migrated to: https://activemq.apache.org/activemq-web ([https](https://activemq.apache.org/activemq-web) result 404). * [ ] http://apache.org/activemq/artemis-commons (404) with 1 occurrences migrated to: https://apache.org/activemq/artemis-commons ([https](https://apache.org/activemq/artemis-commons) result 404). * [ ] http://apache.org/activemq/artemis-core-client (404) with 1 occurrences migrated to: https://apache.org/activemq/artemis-core-client ([https](https://apache.org/activemq/artemis-core-client) result 404). * [ ] http://apache.org/activemq/artemis-jms-client (404) with 1 occurrences migrated to: https://apache.org/activemq/artemis-jms-client ([https](https://apache.org/activemq/artemis-jms-client) result 404). * [ ] http://apache.org/activemq/artemis-jms-server (404) with 1 occurrences migrated to: https://apache.org/activemq/artemis-jms-server ([https](https://apache.org/activemq/artemis-jms-server) result 404). * [ ] http://apache.org/activemq/artemis-journal (404) with 1 occurrences migrated to: https://apache.org/activemq/artemis-journal ([https](https://apache.org/activemq/artemis-journal) result 404). * [ ] http://apache.org/activemq/artemis-native (404) with 1 occurrences migrated to: https://apache.org/activemq/artemis-native ([https](https://apache.org/activemq/artemis-native) result 404). * [ ] http://apache.org/activemq/artemis-protocols/artemis-amqp-protocol (404) with 1 occurrences migrated to: https://apache.org/activemq/artemis-protocols/artemis-amqp-protocol ([https](https://apache.org/activemq/artemis-protocols/artemis-amqp-protocol) result 404). * [ ] http://apache.org/activemq/artemis-selector (404) with 1 occurrences migrated to: https://apache.org/activemq/artemis-selector ([https](https://apache.org/activemq/artemis-selector) result 404). * [ ] http://apache.org/activemq/artemis-server (404) with 1 occurrences migrated to: https://apache.org/activemq/artemis-server ([https](https://apache.org/activemq/artemis-server) result 404). * [ ] http://apache.org/activemq/artemis-service-extensions (404) with 1 occurrences migrated to: https://apache.org/activemq/artemis-service-extensions ([https](https://apache.org/activemq/artemis-service-extensions) result 404). * [ ] http://camel.apache.org/camel-parent/components/camel-jackson (404) with 1 occurrences migrated to: https://camel.apache.org/camel-parent/components/camel-jackson ([https](https://camel.apache.org/camel-parent/components/camel-jackson) result 404). * [ ] http://camel.apache.org/camel-parent/components/camel-jms (404) with 1 occurrences migrated to: https://camel.apache.org/camel-parent/components/camel-jms ([https](https://camel.apache.org/camel-parent/components/camel-jms) result 404). * [ ] http://camel.apache.org/camel-parent/components/camel-spring (404) with 1 occurrences migrated to: https://camel.apache.org/camel-parent/components/camel-spring ([https](https://camel.apache.org/camel-parent/components/camel-spring) result 404). * [ ] http://camel.apache.org/camel-parent/components/camel-spring-boot-starter (404) with 1 occurrences migrated to: https://camel.apache.org/camel-parent/components/camel-spring-boot-starter ([https](https://camel.apache.org/camel-parent/components/camel-spring-boot-starter) result 404). * [ ] http://code.google.com/appengine/appengine-api-1.0-sdk/ (404) with 1 occurrences migrated to: https://code.google.com/appengine/appengine-api-1.0-sdk/ ([https](https://code.google.com/appengine/appengine-api-1.0-sdk/) result 404). * [ ] http://db.apache.org/derby/derby/ (404) with 1 occurrences migrated to: https://db.apache.org/derby/derby/ ([https](https://db.apache.org/derby/derby/) result 404). * [ ] http://download.eclipse.org/aether/aether-core/0.9.0/apidocs/org/eclipse/aether/util/version/GenericVersionScheme.html (404) with 9 occurrences migrated to: https://download.eclipse.org/aether/aether-core/0.9.0/apidocs/org/eclipse/aether/util/version/GenericVersionScheme.html ([https](https://download.eclipse.org/aether/aether-core/0.9.0/apidocs/org/eclipse/aether/util/version/GenericVersionScheme.html) result 404). * [ ] http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ (301) with 1 occurrences migrated to: https://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ ([https](https://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/) result 404). * [ ] http://flywaydb.org/flyway-core (301) with 1 occurrences migrated to: https://flywaydb.org/flyway-core ([https](https://flywaydb.org/flyway-core) result 404). * [ ] http://github.com/FasterXML/jackson-jaxrs-providers/jackson-datatype-jaxrs (301) with 1 occurrences migrated to: https://github.com/FasterXML/jackson-jaxrs-providers/jackson-datatype-jaxrs ([https](https://github.com/FasterXML/jackson-jaxrs-providers/jackson-datatype-jaxrs) result 404). * [ ] http://github.com/FasterXML/jackson-jaxrs-providers/jackson-jaxrs-base (301) with 1 occurrences migrated to: https://github.com/FasterXML/jackson-jaxrs-providers/jackson-jaxrs-base ([https](https://github.com/FasterXML/jackson-jaxrs-providers/jackson-jaxrs-base) result 404). * [ ] http://github.com/FasterXML/jackson-jaxrs-providers/jackson-jaxrs-json-provider (301) with 1 occurrences migrated to: https://github.com/FasterXML/jackson-jaxrs-providers/jackson-jaxrs-json-provider ([https](https://github.com/FasterXML/jackson-jaxrs-providers/jackson-jaxrs-json-provider) result 404). * [ ] http://github.com/neo4j/neo4j-ogm/neo4j-ogm-api/ (301) with 1 occurrences migrated to: https://github.com/neo4j/neo4j-ogm/neo4j-ogm-api/ ([https](https://github.com/neo4j/neo4j-ogm/neo4j-ogm-api/) result 404). * [ ] http://github.com/neo4j/neo4j-ogm/neo4j-ogm-compiler/ (301) with 1 occurrences migrated to: https://github.com/neo4j/neo4j-ogm/neo4j-ogm-compiler/ ([https](https://github.com/neo4j/neo4j-ogm/neo4j-ogm-compiler/) result 404). * [ ] http://github.com/neo4j/neo4j-ogm/neo4j-ogm-core/ (301) with 1 occurrences migrated to: https://github.com/neo4j/neo4j-ogm/neo4j-ogm-core/ ([https](https://github.com/neo4j/neo4j-ogm/neo4j-ogm-core/) result 404). * [ ] http://github.com/neo4j/neo4j-ogm/neo4j-ogm-http-driver/ (301) with 1 occurrences migrated to: https://github.com/neo4j/neo4j-ogm/neo4j-ogm-http-driver/ ([https](https://github.com/neo4j/neo4j-ogm/neo4j-ogm-http-driver/) result 404). * [ ] http://github.com/sprinframework (301) with 4 occurrences migrated to: https://github.com/sprinframework ([https](https://github.com/sprinframework) result 404). * [ ] http://github.com/spring_hadoop (301) with 4 occurrences migrated to: https://github.com/spring_hadoop ([https](https://github.com/spring_hadoop) result 404). * [ ] http://google-code-prettify.googlecode.com/svn/trunk/README.html (404) with 1 occurrences migrated to: https://google-code-prettify.googlecode.com/svn/trunk/README.html ([https](https://google-code-prettify.googlecode.com/svn/trunk/README.html) result 404). * [ ] http://hc.apache.org/httpcomponents-asyncclient (404) with 1 occurrences migrated to: https://hc.apache.org/httpcomponents-asyncclient ([https](https://hc.apache.org/httpcomponents-asyncclient) result 404). * [ ] http://hc.apache.org/httpcomponents-client (404) with 5 occurrences migrated to: https://hc.apache.org/httpcomponents-client ([https](https://hc.apache.org/httpcomponents-client) result 404). * [ ] http://hibernate.org/validator/hibernate-validator (404) with 1 occurrences migrated to: https://hibernate.org/validator/hibernate-validator ([https](https://hibernate.org/validator/hibernate-validator) result 404). * [ ] http://hibernate.org/validator/hibernate-validator-annotation-processor (404) with 1 occurrences migrated to: https://hibernate.org/validator/hibernate-validator-annotation-processor ([https](https://hibernate.org/validator/hibernate-validator-annotation-processor) result 404). * [ ] http://hornetq.org/hornetq-jms-client (301) with 1 occurrences migrated to: https://hornetq.jboss.org/hornetq-jms-client ([https](https://hornetq.org/hornetq-jms-client) result 404). * [ ] http://hornetq.org/hornetq-jms-server (301) with 1 occurrences migrated to: https://hornetq.jboss.org/hornetq-jms-server ([https](https://hornetq.org/hornetq-jms-server) result 404). * [ ] http://www.infinispan.org/infinispan-jcache-parent/infinispan-jcache (301) with 1 occurrences migrated to: https://infinispan.org/infinispan-jcache-parent/infinispan-jcache ([https](https://www.infinispan.org/infinispan-jcache-parent/infinispan-jcache) result 404). * [ ] http://www.infinispan.org/infinispan-spring4-parent/infinispan-spring4-common (301) with 1 occurrences migrated to: https://infinispan.org/infinispan-spring4-parent/infinispan-spring4-common ([https](https://www.infinispan.org/infinispan-spring4-parent/infinispan-spring4-common) result 404). * [ ] http://www.infinispan.org/infinispan-spring4-parent/infinispan-spring4-embedded (301) with 1 occurrences migrated to: https://infinispan.org/infinispan-spring4-parent/infinispan-spring4-embedded ([https](https://www.infinispan.org/infinispan-spring4-parent/infinispan-spring4-embedded) result 404). * [ ] http://json.org/json2.js (404) with 1 occurrences migrated to: https://json.org/json2.js ([https](https://json.org/json2.js) result 404). * [ ] http://logback.qos.ch/logback-access (302) with 1 occurrences migrated to: https://logback.qos.ch/logback-access ([https](https://logback.qos.ch/logback-access) result 404). * [ ] http://logback.qos.ch/logback-classic (302) with 1 occurrences migrated to: https://logback.qos.ch/logback-classic ([https](https://logback.qos.ch/logback-classic) result 404). * [ ] http://logback.qos.ch/logback-core (302) with 4 occurrences migrated to: https://logback.qos.ch/logback-core ([https](https://logback.qos.ch/logback-core) result 404). * [ ] http://lucene.apache.org/solr-parent/solr-solrj (404) with 1 occurrences migrated to: https://lucene.apache.org/solr-parent/solr-solrj ([https](https://lucene.apache.org/solr-parent/solr-solrj) result 404). * [ ] http://pivotal.github.com/jasmine (404) with 1 occurrences migrated to: https://pivotal.github.com/jasmine ([https](https://pivotal.github.com/jasmine) result 404). * [ ] http://projects.spring.io/spring-boot/spring-boot-actuator-docs/ (404) with 1 occurrences migrated to: https://projects.spring.io/spring-boot/spring-boot-actuator-docs/ ([https](https://projects.spring.io/spring-boot/spring-boot-actuator-docs/) result 404). * [ ] http://projects.spring.io/spring-cloud/spring-cloud-commons/ (404) with 1 occurrences migrated to: https://projects.spring.io/spring-cloud/spring-cloud-commons/ ([https](https://projects.spring.io/spring-cloud/spring-cloud-commons/) result 404). * [ ] http://projects.spring.io/spring-cloud/spring-cloud-config-monitor/ (404) with 1 occurrences migrated to: https://projects.spring.io/spring-cloud/spring-cloud-config-monitor/ ([https](https://projects.spring.io/spring-cloud/spring-cloud-config-monitor/) result 404). * [ ] http://projects.spring.io/spring-cloud/spring-cloud-config-server/ (404) with 1 occurrences migrated to: https://projects.spring.io/spring-cloud/spring-cloud-config-server/ ([https](https://projects.spring.io/spring-cloud/spring-cloud-config-server/) result 404). * [ ] http://projects.spring.io/spring-cloud/spring-cloud-context/ (404) with 1 occurrences migrated to: https://projects.spring.io/spring-cloud/spring-cloud-context/ ([https](https://projects.spring.io/spring-cloud/spring-cloud-context/) result 404). * [ ] http://projects.spring.io/spring-data-mongodb/spring-data-mongodb (404) with 1 occurrences migrated to: https://projects.spring.io/spring-data-mongodb/spring-data-mongodb ([https](https://projects.spring.io/spring-data-mongodb/spring-data-mongodb) result 404). * [ ] http://projects.spring.io/spring-data-mongodb/spring-data-mongodb-cross-store (404) with 1 occurrences migrated to: https://projects.spring.io/spring-data-mongodb/spring-data-mongodb-cross-store ([https](https://projects.spring.io/spring-data-mongodb/spring-data-mongodb-cross-store) result 404). * [ ] http://projects.spring.io/spring-data-mongodb/spring-data-mongodb-log4j (404) with 1 occurrences migrated to: https://projects.spring.io/spring-data-mongodb/spring-data-mongodb-log4j ([https](https://projects.spring.io/spring-data-mongodb/spring-data-mongodb-log4j) result 404). * [ ] http://repo.spring.io/snapshots (404) with 13 occurrences migrated to: https://repo.spring.io/snapshots ([https](https://repo.spring.io/snapshots) result 404). * [ ] http://www.apache.org/license/LICENSE-2.0.txt (404) with 3 occurrences migrated to: https://www.apache.org/license/LICENSE-2.0.txt ([https](https://www.apache.org/license/LICENSE-2.0.txt) result 404). * [ ] http://www.atomikos.com/ate/transactions-jdbc/ (301) with 1 occurrences migrated to: https://www.atomikos.com/ate/transactions-jdbc/ ([https](https://www.atomikos.com/ate/transactions-jdbc/) result 404). * [ ] http://www.atomikos.com/ate/transactions-jms/ (301) with 1 occurrences migrated to: https://www.atomikos.com/ate/transactions-jms/ ([https](https://www.atomikos.com/ate/transactions-jms/) result 404). * [ ] http://www.atomikos.com/ate/transactions-jta/ (301) with 1 occurrences migrated to: https://www.atomikos.com/ate/transactions-jta/ ([https](https://www.atomikos.com/ate/transactions-jta/) result 404). * [ ] http://www.crashub.org/crash.cli/ (404) with 1 occurrences migrated to: https://www.crashub.org/crash.cli/ ([https](https://www.crashub.org/crash.cli/) result 404). * [ ] http://www.crashub.org/crash.connectors/crash.connectors.ssh/ (404) with 1 occurrences migrated to: https://www.crashub.org/crash.connectors/crash.connectors.ssh/ ([https](https://www.crashub.org/crash.connectors/crash.connectors.ssh/) result 404). * [ ] http://www.crashub.org/crash.connectors/crash.connectors.telnet/ (404) with 1 occurrences migrated to: https://www.crashub.org/crash.connectors/crash.connectors.telnet/ ([https](https://www.crashub.org/crash.connectors/crash.connectors.telnet/) result 404). * [ ] http://www.crashub.org/crash.embed/crash.embed.spring/ (404) with 1 occurrences migrated to: https://www.crashub.org/crash.embed/crash.embed.spring/ ([https](https://www.crashub.org/crash.embed/crash.embed.spring/) result 404). * [ ] http://www.crashub.org/crash.plugins/crash.plugins.cron/ (404) with 1 occurrences migrated to: https://www.crashub.org/crash.plugins/crash.plugins.cron/ ([https](https://www.crashub.org/crash.plugins/crash.plugins.cron/) result 404). * [ ] http://www.crashub.org/crash.plugins/crash.plugins.mail/ (404) with 1 occurrences migrated to: https://www.crashub.org/crash.plugins/crash.plugins.mail/ ([https](https://www.crashub.org/crash.plugins/crash.plugins.mail/) result 404). * [ ] http://www.crashub.org/crash.shell/ (404) with 1 occurrences migrated to: https://www.crashub.org/crash.shell/ ([https](https://www.crashub.org/crash.shell/) result 404). * [ ] http://www.eclipse.org/jetty/javax-websocket-server-impl (404) with 1 occurrences migrated to: https://www.eclipse.org/jetty/javax-websocket-server-impl ([https](https://www.eclipse.org/jetty/javax-websocket-server-impl) result 404). * [ ] http://www.eclipse.org/jetty/websocket-client (404) with 1 occurrences migrated to: https://www.eclipse.org/jetty/websocket-client ([https](https://www.eclipse.org/jetty/websocket-client) result 404). * [ ] http://www.eclipse.org/jetty/websocket-server (404) with 1 occurrences migrated to: https://www.eclipse.org/jetty/websocket-server ([https](https://www.eclipse.org/jetty/websocket-server) result 404). * [ ] http://www.eclipse.org/sisu/org.eclipse.sisu.inject/ (404) with 3 occurrences migrated to: https://www.eclipse.org/sisu/org.eclipse.sisu.inject/ ([https](https://www.eclipse.org/sisu/org.eclipse.sisu.inject/) result 404). * [ ] http://www.eclipse.org/sisu/org.eclipse.sisu.plexus/ (404) with 3 occurrences migrated to: https://www.eclipse.org/sisu/org.eclipse.sisu.plexus/ ([https](https://www.eclipse.org/sisu/org.eclipse.sisu.plexus/) result 404). * [ ] http://www.jboss.org/undertow-parent/undertow-core (404) with 1 occurrences migrated to: https://www.jboss.org/undertow-parent/undertow-core ([https](https://www.jboss.org/undertow-parent/undertow-core) result 404). * [ ] http://www.jboss.org/undertow-parent/undertow-servlet (404) with 1 occurrences migrated to: https://www.jboss.org/undertow-parent/undertow-servlet ([https](https://www.jboss.org/undertow-parent/undertow-servlet) result 404). * [ ] http://www.jboss.org/undertow-parent/undertow-websockets-jsr (404) with 1 occurrences migrated to: https://www.jboss.org/undertow-parent/undertow-websockets-jsr ([https](https://www.jboss.org/undertow-parent/undertow-websockets-jsr) result 404). * [ ] http://www.jooq.org/jooq (404) with 1 occurrences migrated to: https://www.jooq.org/jooq ([https](https://www.jooq.org/jooq) result 404). * [ ] http://www.jooq.org/jooq-codegen (404) with 1 occurrences migrated to: https://www.jooq.org/jooq-codegen ([https](https://www.jooq.org/jooq-codegen) result 404). * [ ] http://www.jooq.org/jooq-meta (404) with 1 occurrences migrated to: https://www.jooq.org/jooq-meta ([https](https://www.jooq.org/jooq-meta) result 404). * [ ] http://www.liquibase.org/liquibase-core (404) with 1 occurrences migrated to: https://www.liquibase.org/liquibase-core ([https](https://www.liquibase.org/liquibase-core) result 404). * [ ] http://www.seleniumhq.org/selenium-api/ (302) with 1 occurrences migrated to: https://www.seleniumhq.org/selenium-api/ ([https](https://www.seleniumhq.org/selenium-api/) result 404). * [ ] http://www.seleniumhq.org/selenium-chrome-driver/ (302) with 1 occurrences migrated to: https://www.seleniumhq.org/selenium-chrome-driver/ ([https](https://www.seleniumhq.org/selenium-chrome-driver/) result 404). * [ ] http://www.seleniumhq.org/selenium-firefox-driver/ (302) with 1 occurrences migrated to: https://www.seleniumhq.org/selenium-firefox-driver/ ([https](https://www.seleniumhq.org/selenium-firefox-driver/) result 404). * [ ] http://www.seleniumhq.org/selenium-ie-driver/ (302) with 1 occurrences migrated to: https://www.seleniumhq.org/selenium-ie-driver/ ([https](https://www.seleniumhq.org/selenium-ie-driver/) result 404). * [ ] http://www.seleniumhq.org/selenium-java/ (302) with 1 occurrences migrated to: https://www.seleniumhq.org/selenium-java/ ([https](https://www.seleniumhq.org/selenium-java/) result 404). * [ ] http://www.seleniumhq.org/selenium-remote-driver/ (302) with 1 occurrences migrated to: https://www.seleniumhq.org/selenium-remote-driver/ ([https](https://www.seleniumhq.org/selenium-remote-driver/) result 404). * [ ] http://www.seleniumhq.org/selenium-safari-driver/ (302) with 1 occurrences migrated to: https://www.seleniumhq.org/selenium-safari-driver/ ([https](https://www.seleniumhq.org/selenium-safari-driver/) result 404). * [ ] http://www.seleniumhq.org/selenium-support/ (302) with 1 occurrences migrated to: https://www.seleniumhq.org/selenium-support/ ([https](https://www.seleniumhq.org/selenium-support/) result 404). * [ ] http://api.twitter.com/1/geo/id/01fbe706f872cb32.json (403) with 15 occurrences migrated to: https://api.twitter.com/1/geo/id/01fbe706f872cb32.json ([https](https://api.twitter.com/1/geo/id/01fbe706f872cb32.json) result 410). ## Fixed Success These URLs were switched to an https URL with a 2xx status. While the status was successful, your review is still recommended. * [ ] http://apache.org/foundation/contributing.html with 6 occurrences migrated to: https://apache.org/foundation/contributing.html ([https](https://apache.org/foundation/contributing.html) result 200). * [ ] http://args4j.kohsuke.org/args4j/ with 4 occurrences migrated to: https://args4j.kohsuke.org/args4j/ ([https](https://args4j.kohsuke.org/args4j/) result 200). * [ ] http://asciidoctor.org with 2 occurrences migrated to: https://asciidoctor.org ([https](https://asciidoctor.org) result 200). * [ ] http://backbonejs.org with 1 occurrences migrated to: https://backbonejs.org ([https](https://backbonejs.org) result 200). * [ ] http://www.snakeyaml.org (302) with 1 occurrences migrated to: https://bitbucket.org/asomov/snakeyaml ([https](https://www.snakeyaml.org) result 200). * [ ] http://bugs.jquery.com/ticket/12282 with 1 occurrences migrated to: https://bugs.jquery.com/ticket/12282 ([https](https://bugs.jquery.com/ticket/12282) result 200). * [ ] http://bugs.jquery.com/ticket/12359 with 1 occurrences migrated to: https://bugs.jquery.com/ticket/12359 ([https](https://bugs.jquery.com/ticket/12359) result 200). * [ ] http://bugs.jquery.com/ticket/13378 with 1 occurrences migrated to: https://bugs.jquery.com/ticket/13378 ([https](https://bugs.jquery.com/ticket/13378) result 200). * [ ] http://cdnjs.cloudflare.com/ajax/libs/zepto/1.2.0/zepto.min.js with 11 occurrences migrated to: https://cdnjs.cloudflare.com/ajax/libs/zepto/1.2.0/zepto.min.js ([https](https://cdnjs.cloudflare.com/ajax/libs/zepto/1.2.0/zepto.min.js) result 200). * [ ] http://codehaus-plexus.github.io/plexus-containers/plexus-component-metadata/ with 1 occurrences migrated to: https://codehaus-plexus.github.io/plexus-containers/plexus-component-metadata/ ([https](https://codehaus-plexus.github.io/plexus-containers/plexus-component-metadata/) result 200). * [ ] http://commons.apache.org/proper/commons-beanutils/ with 1 occurrences migrated to: https://commons.apache.org/proper/commons-beanutils/ ([https](https://commons.apache.org/proper/commons-beanutils/) result 200). * [ ] http://commons.apache.org/proper/commons-codec/ with 4 occurrences migrated to: https://commons.apache.org/proper/commons-codec/ ([https](https://commons.apache.org/proper/commons-codec/) result 200). * [ ] http://commons.apache.org/proper/commons-collections/ with 3 occurrences migrated to: https://commons.apache.org/proper/commons-collections/ ([https](https://commons.apache.org/proper/commons-collections/) result 200). * [ ] http://commons.apache.org/proper/commons-compress/ with 3 occurrences migrated to: https://commons.apache.org/proper/commons-compress/ ([https](https://commons.apache.org/proper/commons-compress/) result 200). * [ ] http://commons.apache.org/proper/commons-exec/ with 3 occurrences migrated to: https://commons.apache.org/proper/commons-exec/ ([https](https://commons.apache.org/proper/commons-exec/) result 200). * [ ] http://commons.apache.org/proper/commons-lang/ with 3 occurrences migrated to: https://commons.apache.org/proper/commons-lang/ ([https](https://commons.apache.org/proper/commons-lang/) result 200). * [ ] http://commons.apache.org/proper/commons-pool/ with 1 occurrences migrated to: https://commons.apache.org/proper/commons-pool/ ([https](https://commons.apache.org/proper/commons-pool/) result 200). * [ ] http://community.apache.org/ with 12 occurrences migrated to: https://community.apache.org/ ([https](https://community.apache.org/) result 200). * [ ] http://community.apache.org/gsoc.html with 6 occurrences migrated to: https://community.apache.org/gsoc.html ([https](https://community.apache.org/gsoc.html) result 200). * [ ] http://community.apache.org/newbiefaq.html with 6 occurrences migrated to: https://community.apache.org/newbiefaq.html ([https](https://community.apache.org/newbiefaq.html) result 200). * [ ] http://community.apache.org/newcomers/ with 6 occurrences migrated to: https://community.apache.org/newcomers/ ([https](https://community.apache.org/newcomers/) result 200). * [ ] http://creativecommons.org/licenses/by/3.0/ with 2 occurrences migrated to: https://creativecommons.org/licenses/by/3.0/ ([https](https://creativecommons.org/licenses/by/3.0/) result 200). * [ ] http://diveintohtml5.info/history.html with 1 occurrences migrated to: https://diveintohtml5.info/history.html ([https](https://diveintohtml5.info/history.html) result 200). * [ ] http://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/api/ with 1 occurrences migrated to: https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/api/ ([https](https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/api/) result 200). * [ ] http://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/ with 1 occurrences migrated to: https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/ ([https](https://docs.spring.io/spring-data/jpa/docs/1.3.4.RELEASE/reference/html/) result 200). * [ ] http://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/api/ with 1 occurrences migrated to: https://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/api/ ([https](https://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/api/) result 200). * [ ] http://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/reference/html/ with 1 occurrences migrated to: https://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/reference/html/ ([https](https://docs.spring.io/spring-data/jpa/docs/1.4.0.RC1/reference/html/) result 200). * [ ] http://example.org with 16 occurrences migrated to: https://example.org ([https](https://example.org) result 200). * [ ] http://example.org/ with 32 occurrences migrated to: https://example.org/ ([https](https://example.org/) result 200). * [ ] http://git-scm.com/ with 5 occurrences migrated to: https://git-scm.com/ ([https](https://git-scm.com/) result 200). * [ ] http://git-scm.com/docs/git-clone with 20 occurrences migrated to: https://git-scm.com/docs/git-clone ([https](https://git-scm.com/docs/git-clone) result 200). * [ ] http://github.com/FasterXML/jackson with 8 occurrences migrated to: https://github.com/FasterXML/jackson ([https](https://github.com/FasterXML/jackson) result 200). * [ ] http://github.com/FasterXML/jackson-dataformats-binary with 2 occurrences migrated to: https://github.com/FasterXML/jackson-dataformats-binary ([https](https://github.com/FasterXML/jackson-dataformats-binary) result 200). * [ ] http://github.com/FasterXML/jackson-datatype-jdk8/ with 1 occurrences migrated to: https://github.com/FasterXML/jackson-datatype-jdk8/ ([https](https://github.com/FasterXML/jackson-datatype-jdk8/) result 200). * [ ] http://github.com/FasterXML/jackson-datatype-json-org with 1 occurrences migrated to: https://github.com/FasterXML/jackson-datatype-json-org ([https](https://github.com/FasterXML/jackson-datatype-json-org) result 200). * [ ] http://github.com/FasterXML/jackson-module-jaxb-annotations with 1 occurrences migrated to: https://github.com/FasterXML/jackson-module-jaxb-annotations ([https](https://github.com/FasterXML/jackson-module-jaxb-annotations) result 200). * [ ] http://github.com/FasterXML/jackson-module-parameter-names/ with 1 occurrences migrated to: https://github.com/FasterXML/jackson-module-parameter-names/ ([https](https://github.com/FasterXML/jackson-module-parameter-names/) result 200). * [ ] http://github.com/dain/snappy with 3 occurrences migrated to: https://github.com/dain/snappy ([https](https://github.com/dain/snappy) result 200). * [ ] http://github.com/mockito/mockito/blob/master/LICENSE with 1 occurrences migrated to: https://github.com/mockito/mockito/blob/master/LICENSE ([https](https://github.com/mockito/mockito/blob/master/LICENSE) result 200). * [ ] http://github.com/samskivert/jmustache with 1 occurrences migrated to: https://github.com/samskivert/jmustache ([https](https://github.com/samskivert/jmustache) result 200). * [ ] http://github.com/skyscreamer/yoga with 4 occurrences migrated to: https://github.com/skyscreamer/yoga ([https](https://github.com/skyscreamer/yoga) result 200). * [ ] http://github.com/spring-cloud/spring-cloud-contract with 1 occurrences migrated to: https://github.com/spring-cloud/spring-cloud-contract ([https](https://github.com/spring-cloud/spring-cloud-contract) result 200). * [ ] http://github.com/spring-projects/gh-pages with 1 occurrences migrated to: https://github.com/spring-projects/gh-pages ([https](https://github.com/spring-projects/gh-pages) result 200). * [ ] http://github.com/spring-projects/spring-data-solr with 1 occurrences migrated to: https://github.com/spring-projects/spring-data-solr ([https](https://github.com/spring-projects/spring-data-solr) result 200). * [ ] http://github.com/spring-projects/spring-security-oauth with 2 occurrences migrated to: https://github.com/spring-projects/spring-security-oauth ([https](https://github.com/spring-projects/spring-security-oauth) result 200). * [ ] http://github.com/tim-group/java-statsd-client with 1 occurrences migrated to: https://github.com/tim-group/java-statsd-client ([https](https://github.com/tim-group/java-statsd-client) result 200). * [ ] http://grigio.org with 1 occurrences migrated to: https://grigio.org ([https](https://grigio.org) result 200). * [ ] http://groovy.github.io/GMavenPlus/ with 10 occurrences migrated to: https://groovy.github.io/GMavenPlus/ ([https](https://groovy.github.io/GMavenPlus/) result 200). * [ ] http://h2database.com/html/license.html with 1 occurrences migrated to: https://h2database.com/html/license.html ([https](https://h2database.com/html/license.html) result 200). * [ ] http://handlebarsjs.com/ with 9 occurrences migrated to: https://handlebarsjs.com/ ([https](https://handlebarsjs.com/) result 200). * [ ] http://helpwanted.apache.org/ with 6 occurrences migrated to: https://helpwanted.apache.org/ ([https](https://helpwanted.apache.org/) result 200). * [ ] http://hibernate.org with 6 occurrences migrated to: https://hibernate.org ([https](https://hibernate.org) result 200). * [ ] http://imgs.mi9.com/uploads/landscape/2101/beautiful-leaf-wallpapers_1280x960_28083.jpg with 1 occurrences migrated to: https://imgs.mi9.com/uploads/landscape/2101/beautiful-leaf-wallpapers_1280x960_28083.jpg ([https](https://imgs.mi9.com/uploads/landscape/2101/beautiful-leaf-wallpapers_1280x960_28083.jpg) result 200). * [ ] http://incubator.apache.org/ with 6 occurrences migrated to: https://incubator.apache.org/ ([https](https://incubator.apache.org/) result 200). * [ ] http://jcp.org/aboutJava/communityprocess/final/jsr250/index.html with 3 occurrences migrated to: https://jcp.org/aboutJava/communityprocess/final/jsr250/index.html ([https](https://jcp.org/aboutJava/communityprocess/final/jsr250/index.html) result 200). * [ ] http://jcp.org/en/jsr/detail?id=914 with 1 occurrences migrated to: https://jcp.org/en/jsr/detail?id=914 ([https](https://jcp.org/en/jsr/detail?id=914) result 200). * [ ] http://jekyllrb.com with 1 occurrences migrated to: https://jekyllrb.com ([https](https://jekyllrb.com) result 200). * [ ] http://jquery.com/ with 6 occurrences migrated to: https://jquery.com/ ([https](https://jquery.com/) result 200). * [ ] http://json.org/license.html with 3 occurrences migrated to: https://json.org/license.html ([https](https://json.org/license.html) result 200). * [ ] http://labs.apache.org/ with 6 occurrences migrated to: https://labs.apache.org/ ([https](https://labs.apache.org/) result 200). * [ ] http://logging.apache.org/log4j/2.x/log4j-api/ with 1 occurrences migrated to: https://logging.apache.org/log4j/2.x/log4j-api/ ([https](https://logging.apache.org/log4j/2.x/log4j-api/) result 200). * [ ] http://logging.apache.org/log4j/2.x/log4j-core/ with 1 occurrences migrated to: https://logging.apache.org/log4j/2.x/log4j-core/ ([https](https://logging.apache.org/log4j/2.x/log4j-core/) result 200). * [ ] http://logging.apache.org/log4j/2.x/log4j-slf4j-impl/ with 1 occurrences migrated to: https://logging.apache.org/log4j/2.x/log4j-slf4j-impl/ ([https](https://logging.apache.org/log4j/2.x/log4j-slf4j-impl/) result 200). * [ ] http://martinfowler.com/articles/consumerDrivenContracts.html with 16 occurrences migrated to: https://martinfowler.com/articles/consumerDrivenContracts.html ([https](https://martinfowler.com/articles/consumerDrivenContracts.html) result 200). * [ ] http://maven.apache.org with 11 occurrences migrated to: https://maven.apache.org ([https](https://maven.apache.org) result 200). * [ ] http://maven.apache.org/ with 134 occurrences migrated to: https://maven.apache.org/ ([https](https://maven.apache.org/) result 200). * [ ] http://maven.apache.org/download.cgi with 14 occurrences migrated to: https://maven.apache.org/download.cgi ([https](https://maven.apache.org/download.cgi) result 200). * [ ] http://maven.apache.org/guides/mini/guide-configuring-plugins.html with 5 occurrences migrated to: https://maven.apache.org/guides/mini/guide-configuring-plugins.html ([https](https://maven.apache.org/guides/mini/guide-configuring-plugins.html) result 200). * [ ] http://maven.apache.org/maven-release/maven-release-plugin/ with 1 occurrences migrated to: https://maven.apache.org/maven-release/maven-release-plugin/ ([https](https://maven.apache.org/maven-release/maven-release-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-antrun-plugin/ with 5 occurrences migrated to: https://maven.apache.org/plugins/maven-antrun-plugin/ ([https](https://maven.apache.org/plugins/maven-antrun-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-assembly-plugin/ with 5 occurrences migrated to: https://maven.apache.org/plugins/maven-assembly-plugin/ ([https](https://maven.apache.org/plugins/maven-assembly-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-checkstyle-plugin/ with 11 occurrences migrated to: https://maven.apache.org/plugins/maven-checkstyle-plugin/ ([https](https://maven.apache.org/plugins/maven-checkstyle-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-clean-plugin/ with 5 occurrences migrated to: https://maven.apache.org/plugins/maven-clean-plugin/ ([https](https://maven.apache.org/plugins/maven-clean-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-compiler-plugin/ with 7 occurrences migrated to: https://maven.apache.org/plugins/maven-compiler-plugin/ ([https](https://maven.apache.org/plugins/maven-compiler-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-dependency-plugin/ with 5 occurrences migrated to: https://maven.apache.org/plugins/maven-dependency-plugin/ ([https](https://maven.apache.org/plugins/maven-dependency-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-deploy-plugin/ with 5 occurrences migrated to: https://maven.apache.org/plugins/maven-deploy-plugin/ ([https](https://maven.apache.org/plugins/maven-deploy-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-eclipse-plugin/ with 3 occurrences migrated to: https://maven.apache.org/plugins/maven-eclipse-plugin/ ([https](https://maven.apache.org/plugins/maven-eclipse-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-install-plugin/ with 5 occurrences migrated to: https://maven.apache.org/plugins/maven-install-plugin/ ([https](https://maven.apache.org/plugins/maven-install-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-jar-plugin/ with 8 occurrences migrated to: https://maven.apache.org/plugins/maven-jar-plugin/ ([https](https://maven.apache.org/plugins/maven-jar-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-javadoc-plugin/ with 4 occurrences migrated to: https://maven.apache.org/plugins/maven-javadoc-plugin/ ([https](https://maven.apache.org/plugins/maven-javadoc-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-project-info-reports-plugin/ with 4 occurrences migrated to: https://maven.apache.org/plugins/maven-project-info-reports-plugin/ ([https](https://maven.apache.org/plugins/maven-project-info-reports-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-resources-plugin/ with 8 occurrences migrated to: https://maven.apache.org/plugins/maven-resources-plugin/ ([https](https://maven.apache.org/plugins/maven-resources-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-shade-plugin/ with 4 occurrences migrated to: https://maven.apache.org/plugins/maven-shade-plugin/ ([https](https://maven.apache.org/plugins/maven-shade-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-site-plugin/ with 4 occurrences migrated to: https://maven.apache.org/plugins/maven-site-plugin/ ([https](https://maven.apache.org/plugins/maven-site-plugin/) result 200). * [ ] http://maven.apache.org/plugins/maven-source-plugin/ with 4 occurrences migrated to: https://maven.apache.org/plugins/maven-source-plugin/ ([https](https://maven.apache.org/plugins/maven-source-plugin/) result 200). * [ ] http://maven.apache.org/ref/3.3.9/maven-aether-provider/ with 4 occurrences migrated to: https://maven.apache.org/ref/3.3.9/maven-aether-provider/ ([https](https://maven.apache.org/ref/3.3.9/maven-aether-provider/) result 200). * [ ] http://maven.apache.org/shared/maven-archiver/ with 3 occurrences migrated to: https://maven.apache.org/shared/maven-archiver/ ([https](https://maven.apache.org/shared/maven-archiver/) result 200). * [ ] http://maven.apache.org/shared/maven-filtering/ with 3 occurrences migrated to: https://maven.apache.org/shared/maven-filtering/ ([https](https://maven.apache.org/shared/maven-filtering/) result 200). * [ ] http://maven.apache.org/shared/maven-shared-utils/ with 3 occurrences migrated to: https://maven.apache.org/shared/maven-shared-utils/ ([https](https://maven.apache.org/shared/maven-shared-utils/) result 200). * [ ] http://maven.apache.org/surefire/maven-failsafe-plugin/ with 8 occurrences migrated to: https://maven.apache.org/surefire/maven-failsafe-plugin/ ([https](https://maven.apache.org/surefire/maven-failsafe-plugin/) result 200). * [ ] http://maven.apache.org/surefire/maven-surefire-plugin/ with 6 occurrences migrated to: https://maven.apache.org/surefire/maven-surefire-plugin/ ([https](https://maven.apache.org/surefire/maven-surefire-plugin/) result 200). * [ ] http://maven.apache.org/xsd/assembly-1.1.3.xsd with 34 occurrences migrated to: https://maven.apache.org/xsd/assembly-1.1.3.xsd ([https](https://maven.apache.org/xsd/assembly-1.1.3.xsd) result 200). * [ ] http://maven.apache.org/xsd/maven-4.0.0.xsd with 20 occurrences migrated to: https://maven.apache.org/xsd/maven-4.0.0.xsd ([https](https://maven.apache.org/xsd/maven-4.0.0.xsd) result 200). * [ ] http://nn.mit-license.org/ with 1 occurrences migrated to: https://nn.mit-license.org/ ([https](https://nn.mit-license.org/) result 200). * [ ] http://opensource.org/licenses/BSD-3-Clause with 1 occurrences migrated to: https://opensource.org/licenses/BSD-3-Clause ([https](https://opensource.org/licenses/BSD-3-Clause) result 200). * [ ] http://opensource.org/licenses/MIT with 2 occurrences migrated to: https://opensource.org/licenses/MIT ([https](https://opensource.org/licenses/MIT) result 200). * [ ] http://opensource.org/licenses/mit-license.html with 2 occurrences migrated to: https://opensource.org/licenses/mit-license.html ([https](https://opensource.org/licenses/mit-license.html) result 200). * [ ] http://pages.github.com/ with 1 occurrences migrated to: https://pages.github.com/ ([https](https://pages.github.com/) result 200). * [ ] http://people.apache.org/ with 6 occurrences migrated to: https://people.apache.org/ ([https](https://people.apache.org/) result 200). * [ ] http://people.apache.org/committer-index.html with 6 occurrences migrated to: https://people.apache.org/committer-index.html ([https](https://people.apache.org/committer-index.html) result 200). * [ ] http://projects.spring.io/spring-batch/ with 4 occurrences migrated to: https://projects.spring.io/spring-batch/ ([https](https://projects.spring.io/spring-batch/) result 200). * [ ] http://projects.spring.io/spring-boot/ with 79 occurrences migrated to: https://projects.spring.io/spring-boot/ ([https](https://projects.spring.io/spring-boot/) result 200). * [ ] http://projects.spring.io/spring-cloud/ with 4 occurrences migrated to: https://projects.spring.io/spring-cloud/ ([https](https://projects.spring.io/spring-cloud/) result 200). * [ ] http://repository.jboss.org/licenses/apache-2.0.txt with 3 occurrences migrated to: https://repository.jboss.org/licenses/apache-2.0.txt ([https](https://repository.jboss.org/licenses/apache-2.0.txt) result 200). * [ ] http://rubygems.org with 1 occurrences migrated to: https://rubygems.org ([https](https://rubygems.org) result 200). * [ ] http://rubygems.org/ with 1 occurrences migrated to: https://rubygems.org/ ([https](https://rubygems.org/) result 200). * [ ] http://silviomoreto.github.io/bootstrap-select/ with 2 occurrences migrated to: https://silviomoreto.github.io/bootstrap-select/ ([https](https://silviomoreto.github.io/bootstrap-select/) result 200). * [ ] http://sizzlejs.com/ with 12 occurrences migrated to: https://sizzlejs.com/ ([https](https://sizzlejs.com/) result 200). * [ ] http://spring.io with 1 occurrences migrated to: https://spring.io ([https](https://spring.io) result 200). * [ ] http://spring.io/ with 4 occurrences migrated to: https://spring.io/ ([https](https://spring.io/) result 200). * [ ] http://spring.io/guides/gs/gradle/ with 1 occurrences migrated to: https://spring.io/guides/gs/gradle/ ([https](https://spring.io/guides/gs/gradle/) result 200). * [ ] http://spring.io/guides/gs/maven/ with 1 occurrences migrated to: https://spring.io/guides/gs/maven/ ([https](https://spring.io/guides/gs/maven/) result 200). * [ ] http://spring.io/projects/spring-cloud-contract with 4 occurrences migrated to: https://spring.io/projects/spring-cloud-contract ([https](https://spring.io/projects/spring-cloud-contract) result 200). * [ ] http://stackoverflow.com/questions/tagged/spring-cloud with 1 occurrences migrated to: https://stackoverflow.com/questions/tagged/spring-cloud ([https](https://stackoverflow.com/questions/tagged/spring-cloud) result 200). * [ ] http://stackoverflow.com/questions/tagged/spring-data-jpa with 1 occurrences migrated to: https://stackoverflow.com/questions/tagged/spring-data-jpa ([https](https://stackoverflow.com/questions/tagged/spring-data-jpa) result 200). * [ ] http://status.apache.org with 6 occurrences migrated to: https://status.apache.org ([https](https://status.apache.org) result 200). * [ ] http://subversion.apache.org/style/site.css with 6 occurrences migrated to: https://subversion.apache.org/style/site.css ([https](https://subversion.apache.org/style/site.css) result 200). * [ ] http://tomcat.apache.org/ with 6 occurrences migrated to: https://tomcat.apache.org/ ([https](https://tomcat.apache.org/) result 200). * [ ] http://tomcat.apache.org/taglibs/standard/ with 1 occurrences migrated to: https://tomcat.apache.org/taglibs/standard/ ([https](https://tomcat.apache.org/taglibs/standard/) result 200). * [ ] http://twitter.com/byscuits with 2 occurrences migrated to: https://twitter.com/byscuits ([https](https://twitter.com/byscuits) result 200). * [ ] http://twitter.com/fontawesome with 2 occurrences migrated to: https://twitter.com/fontawesome ([https](https://twitter.com/fontawesome) result 200). * [ ] http://underscorejs.org with 1 occurrences migrated to: https://underscorejs.org ([https](https://underscorejs.org) result 200). * [ ] http://velocity.apache.org/engine/devel/ with 1 occurrences migrated to: https://velocity.apache.org/engine/devel/ ([https](https://velocity.apache.org/engine/devel/) result 200). * [ ] http://velocity.apache.org/tools/devel/ with 1 occurrences migrated to: https://velocity.apache.org/tools/devel/ ([https](https://velocity.apache.org/tools/devel/) result 200). * [ ] http://www.JSON.org/ with 1 occurrences migrated to: https://www.JSON.org/ ([https](https://www.JSON.org/) result 200). * [ ] http://www.antlr.org/ with 1 occurrences migrated to: https://www.antlr.org/ ([https](https://www.antlr.org/) result 200). * [ ] http://www.antlr.org/license.html with 1 occurrences migrated to: https://www.antlr.org/license.html ([https](https://www.antlr.org/license.html) result 200). * [ ] http://www.apachecon.com/ with 6 occurrences migrated to: https://www.apachecon.com/ ([https](https://www.apachecon.com/) result 200). * [ ] http://www.atomikos.com/Main/WhichLicenseApplies with 3 occurrences migrated to: https://www.atomikos.com/Main/WhichLicenseApplies ([https](https://www.atomikos.com/Main/WhichLicenseApplies) result 200). * [ ] http://www.minidev.net/ (301) with 3 occurrences migrated to: https://www.bahis41.com/ ([https](https://www.minidev.net/) result 200). * [ ] http://www.brics.dk/automaton/ with 3 occurrences migrated to: https://www.brics.dk/automaton/ ([https](https://www.brics.dk/automaton/) result 200). * [ ] http://www.eclipse.org/legal/epl-v10.html with 41 occurrences migrated to: https://www.eclipse.org/legal/epl-v10.html ([https](https://www.eclipse.org/legal/epl-v10.html) result 200). * [ ] http://www.eclipse.org/org/documents/epl-v10.php with 21 occurrences migrated to: https://www.eclipse.org/org/documents/epl-v10.php ([https](https://www.eclipse.org/org/documents/epl-v10.php) result 200). * [ ] http://ehcache.org (301) with 4 occurrences migrated to: https://www.ehcache.org/ ([https](https://ehcache.org) result 200). * [ ] http://www.firebirdsql.org/en/devel-jdbc-driver/ with 3 occurrences migrated to: https://www.firebirdsql.org/en/devel-jdbc-driver/ ([https](https://www.firebirdsql.org/en/devel-jdbc-driver/) result 200). * [ ] http://www.gnu.org/copyleft/lesser.html with 5 occurrences migrated to: https://www.gnu.org/copyleft/lesser.html ([https](https://www.gnu.org/copyleft/lesser.html) result 200). * [ ] http://www.gnu.org/licenses/lgpl-2.1.html with 11 occurrences migrated to: https://www.gnu.org/licenses/lgpl-2.1.html ([https](https://www.gnu.org/licenses/lgpl-2.1.html) result 200). * [ ] http://www.gnu.org/licenses/licenses.html with 1 occurrences migrated to: https://www.gnu.org/licenses/licenses.html ([https](https://www.gnu.org/licenses/licenses.html) result 200). * [ ] http://www.gnu.org/licenses/old-licenses/gpl-2.0.html with 1 occurrences migrated to: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html ([https](https://www.gnu.org/licenses/old-licenses/gpl-2.0.html) result 200). * [ ] http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html with 5 occurrences migrated to: https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html ([https](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html) result 200). * [ ] http://www.gravatar.com/avatar/035ae18f5f948ab3c8a5cbf40bbea383?d=mm&s=60 with 5 occurrences migrated to: https://www.gravatar.com/avatar/035ae18f5f948ab3c8a5cbf40bbea383?d=mm&s=60 ([https](https://www.gravatar.com/avatar/035ae18f5f948ab3c8a5cbf40bbea383?d=mm&s=60) result 200). * [ ] http://www.gravatar.com/avatar/b7639ec84d2cddb7acb11672403edac5?d=mm&s=60 with 5 occurrences migrated to: https://www.gravatar.com/avatar/b7639ec84d2cddb7acb11672403edac5?d=mm&s=60 ([https](https://www.gravatar.com/avatar/b7639ec84d2cddb7acb11672403edac5?d=mm&s=60) result 200). * [ ] http://www.gravatar.com/avatar/cbbca82404e50c3e504384568456197a?d=mm&s=60 with 5 occurrences migrated to: https://www.gravatar.com/avatar/cbbca82404e50c3e504384568456197a?d=mm&s=60 ([https](https://www.gravatar.com/avatar/cbbca82404e50c3e504384568456197a?d=mm&s=60) result 200). * [ ] http://www.h2database.com with 1 occurrences migrated to: https://www.h2database.com ([https](https://www.h2database.com) result 200). * [ ] http://www.javassist.org/ with 1 occurrences migrated to: https://www.javassist.org/ ([https](https://www.javassist.org/) result 200). * [ ] http://www.jboss.org with 2 occurrences migrated to: https://www.jboss.org ([https](https://www.jboss.org) result 200). * [ ] http://www.joda.org/joda-time/ with 1 occurrences migrated to: https://www.joda.org/joda-time/ ([https](https://www.joda.org/joda-time/) result 200). * [ ] http://www.jooq.org/inc/LICENSE.txt with 3 occurrences migrated to: https://www.jooq.org/inc/LICENSE.txt ([https](https://www.jooq.org/inc/LICENSE.txt) result 200). * [ ] http://kyruus.com (301) with 2 occurrences migrated to: https://www.kyruus.com/ ([https](https://kyruus.com) result 200). * [ ] http://www.postgresql.org/about/licence/ with 1 occurrences migrated to: https://www.postgresql.org/about/licence/ ([https](https://www.postgresql.org/about/licence/) result 200). * [ ] http://www.slf4j.org with 16 occurrences migrated to: https://www.slf4j.org ([https](https://www.slf4j.org) result 200). * [ ] http://www.slideshare.net/MarcinGrzejszczak/stick-to-the-rules-consumer-driven-contracts-201507-confitura with 16 occurrences migrated to: https://www.slideshare.net/MarcinGrzejszczak/stick-to-the-rules-consumer-driven-contracts-201507-confitura ([https](https://www.slideshare.net/MarcinGrzejszczak/stick-to-the-rules-consumer-driven-contracts-201507-confitura) result 200). * [ ] http://www.springframework.org/schema/beans/spring-beans.xsd with 18 occurrences migrated to: https://www.springframework.org/schema/beans/spring-beans.xsd ([https](https://www.springframework.org/schema/beans/spring-beans.xsd) result 200). * [ ] http://www.springframework.org/schema/integration/spring-integration.xsd with 18 occurrences migrated to: https://www.springframework.org/schema/integration/spring-integration.xsd ([https](https://www.springframework.org/schema/integration/spring-integration.xsd) result 200). * [ ] http://www.thymeleaf.org with 5 occurrences migrated to: https://www.thymeleaf.org ([https](https://www.thymeleaf.org) result 200). * [ ] http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html with 1 occurrences migrated to: https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html ([https](https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html) result 200). * [ ] http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/java-binding.zip with 1 occurrences migrated to: https://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/java-binding.zip ([https](https://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/java-binding.zip) result 200). * [ ] http://www.w3.org/TR/2011/REC-css3-selectors-20110929/ with 2 occurrences migrated to: https://www.w3.org/TR/2011/REC-css3-selectors-20110929/ ([https](https://www.w3.org/TR/2011/REC-css3-selectors-20110929/) result 200). * [ ] http://www.w3.org/TR/CSS21/syndata.html with 2 occurrences migrated to: https://www.w3.org/TR/CSS21/syndata.html ([https](https://www.w3.org/TR/CSS21/syndata.html) result 200). * [ ] http://www.w3.org/TR/selectors/ with 4 occurrences migrated to: https://www.w3.org/TR/selectors/ ([https](https://www.w3.org/TR/selectors/) result 200). * [ ] http://www.xmlunit.org/ with 6 occurrences migrated to: https://www.xmlunit.org/ ([https](https://www.xmlunit.org/) result 200). * [ ] http://asm.objectweb.org/asm/ (301) with 3 occurrences migrated to: https://asm.ow2.org/asm/ ([https](https://asm.objectweb.org/asm/) result 301). * [ ] http://asm.objectweb.org/license.html (301) with 2 occurrences migrated to: https://asm.ow2.org/license.html ([https](https://asm.objectweb.org/license.html) result 301). * [ ] http://cloud.spring.io/spring-cloud-cli with 14 occurrences migrated to: https://cloud.spring.io/spring-cloud-cli ([https](https://cloud.spring.io/spring-cloud-cli) result 301). * [ ] http://code.google.com/appengine/terms.html with 1 occurrences migrated to: https://code.google.com/appengine/terms.html ([https](https://code.google.com/appengine/terms.html) result 301). * [ ] http://code.google.com/p/atinject/ with 4 occurrences migrated to: https://code.google.com/p/atinject/ ([https](https://code.google.com/p/atinject/) result 301). * [ ] http://code.google.com/p/guava-libraries/guava with 4 occurrences migrated to: https://code.google.com/p/guava-libraries/guava ([https](https://code.google.com/p/guava-libraries/guava) result 301). * [ ] http://code.google.com/p/json-simple/ with 1 occurrences migrated to: https://code.google.com/p/json-simple/ ([https](https://code.google.com/p/json-simple/) result 301). * [ ] http://codearte.github.io/accurest with 2 occurrences migrated to: https://codearte.github.io/accurest ([https](https://codearte.github.io/accurest) result 301). * [ ] http://couchbase.com with 1 occurrences migrated to: https://couchbase.com ([https](https://couchbase.com) result 301). * [ ] http://curator.apache.org/curator-framework with 1 occurrences migrated to: https://curator.apache.org/curator-framework ([https](https://curator.apache.org/curator-framework) result 301). * [ ] http://curator.apache.org/curator-recipes with 1 occurrences migrated to: https://curator.apache.org/curator-recipes ([https](https://curator.apache.org/curator-recipes) result 301). * [ ] http://curator.apache.org/curator-test with 1 occurrences migrated to: https://curator.apache.org/curator-test ([https](https://curator.apache.org/curator-test) result 301). * [ ] http://curator.apache.org/curator-x-discovery with 1 occurrences migrated to: https://curator.apache.org/curator-x-discovery ([https](https://curator.apache.org/curator-x-discovery) result 301). * [ ] http://dev.w3.org/csswg/cssom/ with 1 occurrences migrated to: https://dev.w3.org/csswg/cssom/ ([https](https://dev.w3.org/csswg/cssom/) result 301). * [ ] http://docs.python.org/library/functions.html with 1 occurrences migrated to: https://docs.python.org/library/functions.html ([https](https://docs.python.org/library/functions.html) result 301). * [ ] http://static.springframework.org/spring-security/oauth/spring-security-oauth (301) with 1 occurrences migrated to: https://docs.spring.io/spring-security/oauth/spring-security-oauth ([https](https://static.springframework.org/spring-security/oauth/spring-security-oauth) result 301). * [ ] http://static.springframework.org/spring-security/oauth/spring-security-oauth2 (301) with 1 occurrences migrated to: https://docs.spring.io/spring-security/oauth/spring-security-oauth2 ([https](https://static.springframework.org/spring-security/oauth/spring-security-oauth2) result 301). * [ ] http://dom4j.org with 1 occurrences migrated to: https://dom4j.org ([https](https://dom4j.org) result 301). * [ ] http://el-spec.java.net with 1 occurrences migrated to: https://el-spec.java.net ([https](https://el-spec.java.net) result 301). * [ ] http://forum.spring.io/forum/spring-projects/data with 1 occurrences migrated to: https://forum.spring.io/forum/spring-projects/data ([https](https://forum.spring.io/forum/spring-projects/data) result 301). * [ ] http://git-scm.com/documentation with 10 occurrences migrated to: https://git-scm.com/documentation ([https](https://git-scm.com/documentation) result 301). * [ ] http://github.com/SpringSource/spring-data-envers with 1 occurrences migrated to: https://github.com/SpringSource/spring-data-envers ([https](https://github.com/SpringSource/spring-data-envers) result 301). * [ ] http://github.com/SpringSource/spring-data-jpa with 1 occurrences migrated to: https://github.com/SpringSource/spring-data-jpa ([https](https://github.com/SpringSource/spring-data-jpa) result 301). * [ ] http://github.com/SpringSource/spring-hateoas with 1 occurrences migrated to: https://github.com/SpringSource/spring-hateoas ([https](https://github.com/SpringSource/spring-hateoas) result 301). * [ ] http://github.com/cowtowncoder/java-classmate with 1 occurrences migrated to: https://github.com/cowtowncoder/java-classmate ([https](https://github.com/cowtowncoder/java-classmate) result 301). * [ ] http://github.com/flapdoodle-oss/embedmongo.flapdoodle.de with 1 occurrences migrated to: https://github.com/flapdoodle-oss/embedmongo.flapdoodle.de ([https](https://github.com/flapdoodle-oss/embedmongo.flapdoodle.de) result 301). * [ ] http://github.com/pivotal/jasmine-ajax with 1 occurrences migrated to: https://github.com/pivotal/jasmine-ajax ([https](https://github.com/pivotal/jasmine-ajax) result 301). * [ ] http://glassfish.java.net/public/CDDL+GPL_1_1.html with 16 occurrences migrated to: https://glassfish.java.net/public/CDDL+GPL_1_1.html ([https](https://glassfish.java.net/public/CDDL+GPL_1_1.html) result 301). * [ ] http://hc.apache.org/httpcomponents-core-ga with 4 occurrences migrated to: https://hc.apache.org/httpcomponents-core-ga ([https](https://hc.apache.org/httpcomponents-core-ga) result 301). * [ ] http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_ with 1 occurrences migrated to: https://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_ ([https](https://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_) result 301). * [ ] http://javamail.java.net/javax.mail with 1 occurrences migrated to: https://javamail.java.net/javax.mail ([https](https://javamail.java.net/javax.mail) result 301). * [ ] http://javamail.java.net/javax.mail-api with 1 occurrences migrated to: https://javamail.java.net/javax.mail-api ([https](https://javamail.java.net/javax.mail-api) result 301). * [ ] http://jira.springsource.org/browse/DATAJPA with 1 occurrences migrated to: https://jira.springsource.org/browse/DATAJPA ([https](https://jira.springsource.org/browse/DATAJPA) result 301). * [ ] http://jquery.org/license with 12 occurrences migrated to: https://jquery.org/license ([https](https://jquery.org/license) result 301). * [ ] http://jta-spec.java.net with 1 occurrences migrated to: https://jta-spec.java.net ([https](https://jta-spec.java.net) result 301). * [ ] http://junit.org with 4 occurrences migrated to: https://junit.org ([https](https://junit.org) result 301). * [ ] http://maven.apache.org/enforcer/maven-enforcer-plugin with 4 occurrences migrated to: https://maven.apache.org/enforcer/maven-enforcer-plugin ([https](https://maven.apache.org/enforcer/maven-enforcer-plugin) result 301). * [ ] http://maven.apache.org/plugin-tools/maven-plugin-annotations with 3 occurrences migrated to: https://maven.apache.org/plugin-tools/maven-plugin-annotations ([https](https://maven.apache.org/plugin-tools/maven-plugin-annotations) result 301). * [ ] http://maven.apache.org/plugin-tools/maven-plugin-plugin with 14 occurrences migrated to: https://maven.apache.org/plugin-tools/maven-plugin-plugin ([https](https://maven.apache.org/plugin-tools/maven-plugin-plugin) result 301). * [ ] http://maven.apache.org/plugins/maven-release-plugin/ with 4 occurrences migrated to: https://maven.apache.org/plugins/maven-release-plugin/ ([https](https://maven.apache.org/plugins/maven-release-plugin/) result 301). * [ ] http://maven.apache.org/plugins/maven-scm-publish-plugin with 4 occurrences migrated to: https://maven.apache.org/plugins/maven-scm-publish-plugin ([https](https://maven.apache.org/plugins/maven-scm-publish-plugin) result 301). * [ ] http://maven.apache.org/ref/3.2.5/maven-artifact with 3 occurrences migrated to: https://maven.apache.org/ref/3.2.5/maven-artifact ([https](https://maven.apache.org/ref/3.2.5/maven-artifact) result 301). * [ ] http://maven.apache.org/ref/3.2.5/maven-compat with 3 occurrences migrated to: https://maven.apache.org/ref/3.2.5/maven-compat ([https](https://maven.apache.org/ref/3.2.5/maven-compat) result 301). * [ ] http://maven.apache.org/ref/3.2.5/maven-core with 3 occurrences migrated to: https://maven.apache.org/ref/3.2.5/maven-core ([https](https://maven.apache.org/ref/3.2.5/maven-core) result 301). * [ ] http://maven.apache.org/ref/3.2.5/maven-model with 3 occurrences migrated to: https://maven.apache.org/ref/3.2.5/maven-model ([https](https://maven.apache.org/ref/3.2.5/maven-model) result 301). * [ ] http://maven.apache.org/ref/3.2.5/maven-model-builder with 3 occurrences migrated to: https://maven.apache.org/ref/3.2.5/maven-model-builder ([https](https://maven.apache.org/ref/3.2.5/maven-model-builder) result 301). * [ ] http://maven.apache.org/ref/3.2.5/maven-plugin-api with 3 occurrences migrated to: https://maven.apache.org/ref/3.2.5/maven-plugin-api ([https](https://maven.apache.org/ref/3.2.5/maven-plugin-api) result 301). * [ ] http://maven.apache.org/ref/3.2.5/maven-repository-metadata with 3 occurrences migrated to: https://maven.apache.org/ref/3.2.5/maven-repository-metadata ([https](https://maven.apache.org/ref/3.2.5/maven-repository-metadata) result 301). * [ ] http://maven.apache.org/ref/3.2.5/maven-settings with 3 occurrences migrated to: https://maven.apache.org/ref/3.2.5/maven-settings ([https](https://maven.apache.org/ref/3.2.5/maven-settings) result 301). * [ ] http://maven.apache.org/ref/3.2.5/maven-settings-builder with 3 occurrences migrated to: https://maven.apache.org/ref/3.2.5/maven-settings-builder ([https](https://maven.apache.org/ref/3.2.5/maven-settings-builder) result 301). * [ ] http://maven.apache.org/surefire/maven-surefire-plugin with 2 occurrences migrated to: https://maven.apache.org/surefire/maven-surefire-plugin ([https](https://maven.apache.org/surefire/maven-surefire-plugin) result 301). * [ ] http://maven.apache.org/wagon/wagon-provider-api with 3 occurrences migrated to: https://maven.apache.org/wagon/wagon-provider-api ([https](https://maven.apache.org/wagon/wagon-provider-api) result 301). * [ ] http://pact.io/ with 5 occurrences migrated to: https://pact.io/ ([https](https://pact.io/) result 301). * [ ] http://projects.spring.io/spring-cloud with 26 occurrences migrated to: https://projects.spring.io/spring-cloud ([https](https://projects.spring.io/spring-cloud) result 301). * [ ] http://projects.spring.io/spring-data-jpa with 2 occurrences migrated to: https://projects.spring.io/spring-data-jpa ([https](https://projects.spring.io/spring-data-jpa) result 301). * [ ] http://projects.spring.io/spring-ws with 4 occurrences migrated to: https://projects.spring.io/spring-ws ([https](https://projects.spring.io/spring-ws) result 301). * [ ] http://servlet-spec.java.net with 1 occurrences migrated to: https://servlet-spec.java.net ([https](https://servlet-spec.java.net) result 301). * [ ] http://sf.net/projects/wsdl4j with 1 occurrences migrated to: https://sf.net/projects/wsdl4j ([https](https://sf.net/projects/wsdl4j) result 301). * [ ] http://spockframework.github.io/ with 16 occurrences migrated to: https://spockframework.github.io/ ([https](https://spockframework.github.io/) result 301). * [ ] http://spring-projects.github.io/ with 1 occurrences migrated to: https://spring-projects.github.io/ ([https](https://spring-projects.github.io/) result 301). * [ ] http://stackoverflow.com/questions/136443/why-doesnt-ie7- with 1 occurrences migrated to: https://stackoverflow.com/questions/136443/why-doesnt-ie7- ([https](https://stackoverflow.com/questions/136443/why-doesnt-ie7-) result 301). * [ ] http://twitter.github.com/bootstrap/javascript.html with 13 occurrences migrated to: https://twitter.github.com/bootstrap/javascript.html ([https](https://twitter.github.com/bootstrap/javascript.html) result 301). * [ ] http://www.eclemma.org/jacoco with 24 occurrences migrated to: https://www.eclemma.org/jacoco ([https](https://www.eclemma.org/jacoco) result 301). * [ ] http://www.eclipse.org/jetty with 16 occurrences migrated to: https://www.eclipse.org/jetty ([https](https://www.eclipse.org/jetty) result 301). * [ ] http://www.eclipse.org/jetty/jetty-orbit/javax.servlet.jsp with 1 occurrences migrated to: https://www.eclipse.org/jetty/jetty-orbit/javax.servlet.jsp ([https](https://www.eclipse.org/jetty/jetty-orbit/javax.servlet.jsp) result 301). * [ ] http://www.hazelcast.com/hazelcast-hibernate/hazelcast-hibernate4/ with 1 occurrences migrated to: https://www.hazelcast.com/hazelcast-hibernate/hazelcast-hibernate4/ ([https](https://www.hazelcast.com/hazelcast-hibernate/hazelcast-hibernate4/) result 301). * [ ] http://www.hazelcast.com/hazelcast-spring/ with 1 occurrences migrated to: https://www.hazelcast.com/hazelcast-spring/ ([https](https://www.hazelcast.com/hazelcast-spring/) result 301). * [ ] http://www.hazelcast.com/hazelcast/ with 1 occurrences migrated to: https://www.hazelcast.com/hazelcast/ ([https](https://www.hazelcast.com/hazelcast/) result 301). * [ ] http://www.jolokia.org/jolokia-agent-parent/jolokia-core/ with 1 occurrences migrated to: https://www.jolokia.org/jolokia-agent-parent/jolokia-core/ ([https](https://www.jolokia.org/jolokia-agent-parent/jolokia-core/) result 301). * [ ] http://www.modernizr.com/ with 1 occurrences migrated to: https://www.modernizr.com/ ([https](https://www.modernizr.com/) result 301). * [ ] http://www.mojohaus.org/animal-sniffer/animal-sniffer-maven-plugin with 1 occurrences migrated to: https://www.mojohaus.org/animal-sniffer/animal-sniffer-maven-plugin ([https](https://www.mojohaus.org/animal-sniffer/animal-sniffer-maven-plugin) result 301). * [ ] http://www.mojohaus.org/exec-maven-plugin with 5 occurrences migrated to: https://www.mojohaus.org/exec-maven-plugin ([https](https://www.mojohaus.org/exec-maven-plugin) result 301). * [ ] http://www.mongodb.org with 2 occurrences migrated to: https://www.mongodb.org ([https](https://www.mongodb.org) result 301). * [ ] http://www.mozilla.org/MPL/MPL-1.1.html with 1 occurrences migrated to: https://www.mozilla.org/MPL/MPL-1.1.html ([https](https://www.mozilla.org/MPL/MPL-1.1.html) result 301). * [ ] http://www.mozilla.org/js/language/js20/rationale/syntax.html with 1 occurrences migrated to: https://www.mozilla.org/js/language/js20/rationale/syntax.html ([https](https://www.mozilla.org/js/language/js20/rationale/syntax.html) result 301). * [ ] http://www.opensource.org/licenses/BSD-3-Clause with 3 occurrences migrated to: https://www.opensource.org/licenses/BSD-3-Clause ([https](https://www.opensource.org/licenses/BSD-3-Clause) result 301). * [ ] http://www.opensource.org/licenses/bsd-license.php with 8 occurrences migrated to: https://www.opensource.org/licenses/bsd-license.php ([https](https://www.opensource.org/licenses/bsd-license.php) result 301). * [ ] http://www.opensource.org/licenses/cpl1.0.txt with 1 occurrences migrated to: https://www.opensource.org/licenses/cpl1.0.txt ([https](https://www.opensource.org/licenses/cpl1.0.txt) result 301). * [ ] http://www.opensource.org/licenses/lgpl-license.php with 7 occurrences migrated to: https://www.opensource.org/licenses/lgpl-license.php ([https](https://www.opensource.org/licenses/lgpl-license.php) result 301). * [ ] http://www.opensource.org/licenses/mit-license.php with 15 occurrences migrated to: https://www.opensource.org/licenses/mit-license.php ([https](https://www.opensource.org/licenses/mit-license.php) result 301). * [ ] http://www.sonatype.org/nexus/ with 7 occurrences migrated to: https://www.sonatype.org/nexus/ ([https](https://www.sonatype.org/nexus/) result 301). * [ ] http://nexus.sonatype.org/oss-repository-hosting.html/sqlite-jdbc (301) with 1 occurrences migrated to: https://www.sonatype.org/nexus/ ([https](https://nexus.sonatype.org/oss-repository-hosting.html/sqlite-jdbc) result 301). * [ ] http://nexus.sonatype.org/oss-repository-hosting.html/parent/elasticsearch (301) with 1 occurrences migrated to: https://www.sonatype.org/nexus/ ([https](https://nexus.sonatype.org/oss-repository-hosting.html/parent/elasticsearch) result 301). * [ ] http://www.spring.io with 8 occurrences migrated to: https://www.spring.io ([https](https://www.spring.io) result 301). * [ ] http://www.spring.io/spring-data/spring-data-commons with 1 occurrences migrated to: https://www.spring.io/spring-data/spring-data-commons ([https](https://www.spring.io/spring-data/spring-data-commons) result 301). * [ ] http://www.spring.io/spring-data/spring-data-gemfire with 1 occurrences migrated to: https://www.spring.io/spring-data/spring-data-gemfire ([https](https://www.spring.io/spring-data/spring-data-gemfire) result 301). * [ ] http://www.spring.io/spring-data/spring-data-keyvalue with 1 occurrences migrated to: https://www.spring.io/spring-data/spring-data-keyvalue ([https](https://www.spring.io/spring-data/spring-data-keyvalue) result 301). * [ ] http://www.spring.io/spring-data/spring-data-neo4j-parent/spring-data-neo4j with 1 occurrences migrated to: https://www.spring.io/spring-data/spring-data-neo4j-parent/spring-data-neo4j ([https](https://www.spring.io/spring-data/spring-data-neo4j-parent/spring-data-neo4j) result 301). * [ ] http://www.spring.io/spring-data/spring-data-redis with 1 occurrences migrated to: https://www.spring.io/spring-data/spring-data-redis ([https](https://www.spring.io/spring-data/spring-data-redis) result 301). * [ ] http://www.spring.io/spring-data/spring-data-rest-parent/spring-data-rest-core with 1 occurrences migrated to: https://www.spring.io/spring-data/spring-data-rest-parent/spring-data-rest-core ([https](https://www.spring.io/spring-data/spring-data-rest-parent/spring-data-rest-core) result 301). * [ ] http://www.spring.io/spring-data/spring-data-rest-parent/spring-data-rest-hal-browser with 1 occurrences migrated to: https://www.spring.io/spring-data/spring-data-rest-parent/spring-data-rest-hal-browser ([https](https://www.spring.io/spring-data/spring-data-rest-parent/spring-data-rest-hal-browser) result 301). * [ ] http://www.spring.io/spring-data/spring-data-rest-parent/spring-data-rest-webmvc with 1 occurrences migrated to: https://www.spring.io/spring-data/spring-data-rest-parent/spring-data-rest-webmvc ([https](https://www.spring.io/spring-data/spring-data-rest-parent/spring-data-rest-webmvc) result 301). * [ ] http://www.springsource.org with 1 occurrences migrated to: https://www.springsource.org ([https](https://www.springsource.org) result 301). * [ ] http://www.svnkit.com/ with 1 occurrences migrated to: https://www.svnkit.com/ ([https](https://www.svnkit.com/) result 301). * [ ] http://www.svnkit.com/license.html with 1 occurrences migrated to: https://www.svnkit.com/license.html ([https](https://www.svnkit.com/license.html) result 301). * [ ] http://www.w3.org/TR/css3-selectors/ with 2 occurrences migrated to: https://www.w3.org/TR/css3-selectors/ ([https](https://www.w3.org/TR/css3-selectors/) result 301). * [ ] http://www.w3.org/TR/css3-syntax/ with 1 occurrences migrated to: https://www.w3.org/TR/css3-syntax/ ([https](https://www.w3.org/TR/css3-syntax/) result 301). * [ ] http://xml.apache.org/commons/components/external/ with 1 occurrences migrated to: https://xml.apache.org/commons/components/external/ ([https](https://xml.apache.org/commons/components/external/) result 301). * [ ] http://assertj.org/assertj-core (302) with 4 occurrences migrated to: https://c.clickprotects.com/c?pid=11165151-assertjorg&c=b25a569aad684a3b19b4ddb1957a8597-wFUeFFewseuf%09XIjEvtaDIvv0%2FfeueSeXpVphrp%09wSSFSuukS3S3f%09ukf%09UwU%09w4%09tijv2I%092vvRN%3A%2F%2FatYIaeIAj0eEtQ%2FatYIa%2FwF%2Ff%2Fw3%2F9Iji6ajQI%2F9Iji6ajQIeEQR%3FAQ%3DkwF%265p6g9%3D3UF3s%26jtL%3D%25Spw%26mIaE2jLvg9%3DSw3F3k%26EajniIa_qo%3DSw3F3k%26oIjigo%3DGLSyb8PsMmzmpfT7CcGAMz%25F9%25F9%26Wai%3D2vvR%25Fh%25s6%25s6EiqEHNIaYIeojavNIjaE2eLIv%25s6iqLH%25s6EiqEH%25F6iqo%25F93s4fffkfuw3fss3Ff%25sUoN_N_Hnzqo%25F9Su4fffffk3Fw3fuUF%25sUoN_N_qLYILvta0_OIIo_qo%25F9344fffffffwffsf4s%25sUoN_I_RatoWEv_qo%25F9mlF3sVV%25s6h%25sUEq_EWNvtQIa_qo%25F9wffws3s%25sUEq_ENI_qo%25F9wffk%25sUEq_OIIo_qo%25F9wffkS3w%25sUoN_I_RatoWEv_QIaE2jLv_qo%25F9wF4u4uk%25sUoN_I_RatoWEv_EtWLva0%25F9Gr%25sUoN_I_RatoWEv_ijLzWjzI%25F9IL%25sUoN_I_RatoWEv_E2jLLIi%25F9tLiqLI%25sUoN_Wai_Y%25F9s%25sUoN_oINv_Wai%25F92vvRN%25Fh%25s6%25s6nnneYIaq.tLnqaIiINNeEtQ%25s6NQjavR2tLIN%25s6jRRiI-qR2tLI-ba%25s6%25sSF6NHW%25sSF9NHWFw3fsSf%25sSsUEQR%25sSF9ENI-r2tRRqLz-mlF3sVV%25s6h%25sSsUEQR%25sSF97rp-7-BZ-DTD-X-h7-DTDp-DTDp-s7fcyf-cy-p5hJ-mlF3sVV%25s6h%25sSsUEYtNaE%25sSF9ENIep5hJemlF3sVV%25s6h%25sSsUEYt_Eaqo%25sSF9%25sS45EjQRjqzL%25sS49%25sU2vvRN%25Fh%25s6%25s6veQ0YqNWjiqMeLIv%25s6EiqEH_RqbIi%25F6Iv%25F9E%25sUjzt%25F9sws%25sUjt%25F9uSU%25sUjEj%25F9%25S5*7jQRjqzLg9*%25S9%25sUNq%25F9-s%25sUEq%25F9-s%25sURq%25F9-s%25sUjo%25F9%25S5*hozatWRg9*%25S9%25sUNYw%25F9%25S5*lajEHIag9*%25S9%25sUjoYv%25F9-s%25sUE2Li%25F9-s%25sUYLoa%25F9ww3S%25sUN.%25F9USUw%25sUaIo%25F9%26iqLHqL_qo%3Duwwsu3f%26gNNov%3Dw3fFsUfksfS3%26NIjaE2g9%3DRsSeF4wEwOFFEwksAOkIOkwO%269IjiDjQI%3DhRRiI%257s%25hp%2Bqc2tLI%257s%25hp%2ByX%2Bwsu85%2BqL%2BJIiitn%26oiRaE%3D433e33%26hX%3Ds%26D8%3Dw%26D9c%3Dsf%26cD%3Dw%26rl%3D4%266cl%3D9rc%26D9r%3D%26Dmr%3D%26mXr%3D%26c9%3D%26AaLgo%3Dwk4UF%26gN6va%3Df%26gNrQjav%3Df%26tR%3D%267m%3D%26XX%3Ds%26gNVRN%3Df%26EtoI%3D%26jEtoI%3DkFU%26EjvIzta0%3D%26BjNVqLH%3D%26D9%3D%26mD%3D%268X%3D%26iLHgo%3D%26rdG%3DmlF3sVV%25s6h%26tR%3D%24%21%7BEiqEH9jvjeEiqEHgo%7D%09%5BLWii%5D%09fefF%09feUs%09%5BLWii%5D%09OjiNI%09uFk%09Sw3F3k%2F3UF3s%2Fuwwsu3f%09rphX7B%09%5BLWii%5D%09%5BLWii%5D%09f%09w3sewUuewffewsu%09%5BLWii%5D%09%5BLWii%5D%09f%7Ef%093wUEkjFj-3EAs-kUAA-uokO-SoA3IjuIjE33%09jNNIav1%09%5BLWii%5D%09jNNIav1%09%5BLWii%5D%09%5BLWii%5D%09%5BLWii%5D%09f%09f%09%5BLWii%5D%09f%09f%09%5BLWii%5D%09GLSyb8PsMmzmpfT7CcGAMz%3D%3D%09%5BLWii%5D%09uFk-Sw3F3k%2F3UF3s%2Fuwwsu3f%09f%09%5BLWii%5D%09%5BLWii%5D%09UUfUs%09jNNIav1taz%09%5BLWii%5D%09%5BLWii%5D%09&r=1&ptt= ([https](https://assertj.org/assertj-core) result 302). * [ ] http://commons.apache.org/collections/ with 1 occurrences migrated to: https://commons.apache.org/collections/ ([https](https://commons.apache.org/collections/) result 302). * [ ] http://commons.apache.org/configuration/ with 1 occurrences migrated to: https://commons.apache.org/configuration/ ([https](https://commons.apache.org/configuration/) result 302). * [ ] http://commons.apache.org/dbcp/ with 2 occurrences migrated to: https://commons.apache.org/dbcp/ ([https](https://commons.apache.org/dbcp/) result 302). * [ ] http://commons.apache.org/digester/ with 1 occurrences migrated to: https://commons.apache.org/digester/ ([https](https://commons.apache.org/digester/) result 302). * [ ] http://commons.apache.org/io/ with 3 occurrences migrated to: https://commons.apache.org/io/ ([https](https://commons.apache.org/io/) result 302). * [ ] http://commons.apache.org/pool/ with 1 occurrences migrated to: https://commons.apache.org/pool/ ([https](https://commons.apache.org/pool/) result 302). * [ ] http://dev.mysql.com/doc/connector-j/en/ with 1 occurrences migrated to: https://dev.mysql.com/doc/connector-j/en/ ([https](https://dev.mysql.com/doc/connector-j/en/) result 302). * [ ] http://github.com/xetorthio/jedis/raw/master/LICENSE.txt with 1 occurrences migrated to: https://github.com/xetorthio/jedis/raw/master/LICENSE.txt ([https](https://github.com/xetorthio/jedis/raw/master/LICENSE.txt) result 302). * [ ] http://maven.apache.org/ref/current/maven-core/lifecycles.html with 15 occurrences migrated to: https://maven.apache.org/ref/current/maven-core/lifecycles.html ([https](https://maven.apache.org/ref/current/maven-core/lifecycles.html) result 302). * [ ] http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx with 2 occurrences migrated to: https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx ([https](https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx) result 302). * [ ] http://repo.spring.io/libs-snapshot with 16 occurrences migrated to: https://repo.spring.io/libs-snapshot ([https](https://repo.spring.io/libs-snapshot) result 302). * [ ] http://repo.spring.io/milestone with 31 occurrences migrated to: https://repo.spring.io/milestone ([https](https://repo.spring.io/milestone) result 302). * [ ] http://repo.spring.io/release with 27 occurrences migrated to: https://repo.spring.io/release ([https](https://repo.spring.io/release) result 302). * [ ] http://repo.spring.io/snapshot with 27 occurrences migrated to: https://repo.spring.io/snapshot ([https](https://repo.spring.io/snapshot) result 302). * [ ] http://scripts.sil.org/OFL with 2 occurrences migrated to: https://scripts.sil.org/OFL ([https](https://scripts.sil.org/OFL) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-core with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-core ([https](https://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-core) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-eureka-client with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-eureka-client ([https](https://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-eureka-client) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-hystrix-stream with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-hystrix-stream ([https](https://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-hystrix-stream) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-spectator with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-spectator ([https](https://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-spectator) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-turbine-stream with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-turbine-stream ([https](https://spring.io/spring-cloud/spring-cloud-netflix/spring-cloud-netflix-turbine-stream) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream ([https](https://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream-codec with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream-codec ([https](https://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream-codec) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream-rxjava with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream-rxjava ([https](https://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream-rxjava) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream-test-support with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream-test-support ([https](https://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream-test-support) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream-test-support-internal with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream-test-support-internal ([https](https://spring.io/spring-cloud/spring-cloud-stream-parent/spring-cloud-stream-test-support-internal) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-zookeeper/spring-cloud-zookeeper-config with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-zookeeper/spring-cloud-zookeeper-config ([https](https://spring.io/spring-cloud/spring-cloud-zookeeper/spring-cloud-zookeeper-config) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-zookeeper/spring-cloud-zookeeper-core with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-zookeeper/spring-cloud-zookeeper-core ([https](https://spring.io/spring-cloud/spring-cloud-zookeeper/spring-cloud-zookeeper-core) result 302). * [ ] http://spring.io/spring-cloud/spring-cloud-zookeeper/spring-cloud-zookeeper-discovery with 1 occurrences migrated to: https://spring.io/spring-cloud/spring-cloud-zookeeper/spring-cloud-zookeeper-discovery ([https](https://spring.io/spring-cloud/spring-cloud-zookeeper/spring-cloud-zookeeper-discovery) result 302). * [ ] http://spring.io/spring-security with 14 occurrences migrated to: https://spring.io/spring-security ([https](https://spring.io/spring-security) result 302). * [ ] http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context with 1 occurrences migrated to: https://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context ([https](https://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context) result 302). * [ ] http://www.eclipse.org/aether/aether-api/ with 4 occurrences migrated to: https://www.eclipse.org/aether/aether-api/ ([https](https://www.eclipse.org/aether/aether-api/) result 302). * [ ] http://www.eclipse.org/aether/aether-connector-basic/ with 4 occurrences migrated to: https://www.eclipse.org/aether/aether-connector-basic/ ([https](https://www.eclipse.org/aether/aether-connector-basic/) result 302). * [ ] http://www.eclipse.org/aether/aether-impl/ with 4 occurrences migrated to: https://www.eclipse.org/aether/aether-impl/ ([https](https://www.eclipse.org/aether/aether-impl/) result 302). * [ ] http://www.eclipse.org/aether/aether-spi/ with 3 occurrences migrated to: https://www.eclipse.org/aether/aether-spi/ ([https](https://www.eclipse.org/aether/aether-spi/) result 302). * [ ] http://www.eclipse.org/aether/aether-transport-file/ with 4 occurrences migrated to: https://www.eclipse.org/aether/aether-transport-file/ ([https](https://www.eclipse.org/aether/aether-transport-file/) result 302). * [ ] http://www.eclipse.org/aether/aether-transport-http/ with 4 occurrences migrated to: https://www.eclipse.org/aether/aether-transport-http/ ([https](https://www.eclipse.org/aether/aether-transport-http/) result 302). * [ ] http://www.eclipse.org/aether/aether-util/ with 3 occurrences migrated to: https://www.eclipse.org/aether/aether-util/ ([https](https://www.eclipse.org/aether/aether-util/) result 302). * [ ] http://www.jboss.org/jbosstm/narayana-jta-all/jdbc/ with 1 occurrences migrated to: https://www.jboss.org/jbosstm/narayana-jta-all/jdbc/ ([https](https://www.jboss.org/jbosstm/narayana-jta-all/jdbc/) result 302). * [ ] http://www.jboss.org/jbosstm/narayana-jta-all/jms/ with 1 occurrences migrated to: https://www.jboss.org/jbosstm/narayana-jta-all/jms/ ([https](https://www.jboss.org/jbosstm/narayana-jta-all/jms/) result 302). * [ ] http://www.jboss.org/jbosstm/narayana-jta-all/jta/ with 1 occurrences migrated to: https://www.jboss.org/jbosstm/narayana-jta-all/jta/ ([https](https://www.jboss.org/jbosstm/narayana-jta-all/jta/) result 302). * [ ] http://www.jboss.org/jbosstm/narayana-jts-all/narayana-jts-integration/ with 1 occurrences migrated to: https://www.jboss.org/jbosstm/narayana-jts-all/narayana-jts-integration/ ([https](https://www.jboss.org/jbosstm/narayana-jts-all/narayana-jts-integration/) result 302). # Ignored These URLs were intentionally ignored. * http://accessors-smart/ with 3 occurrences * http://docbook.org/ns/docbook with 48053 occurrences * http://jacoco-maven-plugin with 5 occurrences * http://link/to/your/nexus/or/artifactory/or/sth with 47 occurrences * http://link/to/your/nexus/or/artifactory/or/sth</contractsRepositoryUrl> with 3 occurrences * http://loanIssuance/name with 16 occurrences * http://localhost with 71 occurrences * http://localhost:12345 with 16 occurrences * http://localhost:12346 with 16 occurrences * http://localhost:4000/spring-xyz/ with 1 occurrences * http://localhost:8080/foo with 1 occurrences * http://localhost:8081/artifactory/libs-release-local with 28 occurrences * http://localhost:8081/artifactory/libs-release-local/com/example/bookstore/0.0.1.RELEASE/ with 14 occurrences * http://localhost:8081/artifactory/libs-release-local/com/example/bookstore/0.0.1.RELEASE/bookstore-0.0.1.RELEASE-stubs.jar with 14 occurrences * http://localhost:8085 with 19 occurrences * http://localhost:8085</contractsRepositoryUrl> with 1 occurrences * http://localhost:8888/users with 18 occurrences * http://localhost:9876/api/books with 2 occurrences * http://maven.apache.org/POM/4.0.0 with 56 occurrences * http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 with 76 occurrences * http://someNameThatShouldMapFraudDetectionServer/name with 16 occurrences * http://some_url with 11 occurrences * http://www with 1 occurrences * http://www.springframework.org/schema/beans with 36 occurrences * http://www.springframework.org/schema/integration with 36 occurrences * http://www.w3.org/1999/xhtml with 160 occurrences * http://www.w3.org/1999/xlink with 1 occurrences * http://www.w3.org/2000/svg with 1 occurrences * http://www.w3.org/2001/XMLSchema-instance with 84 occurrences
458 lines
73 KiB
HTML
458 lines
73 KiB
HTML
<html><head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
|
<title>3. Spring Cloud Contract Verifier Setup</title><link rel="stylesheet" type="text/css" href="css/manual-multipage.css"><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="multi_spring-cloud-contract.html" title="Spring Cloud Contract"><link rel="up" href="multi_spring-cloud-contract.html" title="Spring Cloud Contract"><link rel="prev" href="multi__spring_cloud_contract_verifier_introduction.html" title="2. Spring Cloud Contract Verifier Introduction"><link rel="next" href="multi__spring_cloud_contract_verifier_messaging.html" title="4. Spring Cloud Contract Verifier Messaging"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3. Spring Cloud Contract Verifier Setup</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="multi__spring_cloud_contract_verifier_introduction.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="multi__spring_cloud_contract_verifier_messaging.html">Next</a></td></tr></table><hr></div><div class="chapter"><div class="titlepage"><div><div><h1 class="title"><a name="_spring_cloud_contract_verifier_setup" href="#_spring_cloud_contract_verifier_setup"></a>3. Spring Cloud Contract Verifier Setup</h1></div></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_gradle_project" href="#_gradle_project"></a>3.1 Gradle Project</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_prerequisites" href="#_prerequisites"></a>3.1.1 Prerequisites</h3></div></div></div><p>In order to use Spring Cloud Contract Verifier with WireMock you have to use Gradle or Maven plugin.</p><div class="warning" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="images/warning.png"></td><th align="left">Warning</th></tr><tr><td align="left" valign="top"><p>If you want to use Spock in your projects you have to add separately
|
|
the <code class="literal">spock-core</code> and <code class="literal">spock-spring</code> modules. Check <a class="link" href="https://spockframework.github.io/" target="_top">Spock docs for more information</a></p></td></tr></table></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_add_gradle_plugin_with_dependencies" href="#_add_gradle_plugin_with_dependencies"></a>3.1.2 Add gradle plugin with dependencies</h3></div></div></div><pre class="programlisting">buildscript {
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
dependencies {
|
|
classpath <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"org.springframework.boot:spring-boot-gradle-plugin:${springboot_version}"</span>
|
|
classpath <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"org.springframework.cloud:spring-cloud-contract-gradle-plugin:${verifier_version}"</span>
|
|
}
|
|
}
|
|
|
|
apply plugin: <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'groovy'</span>
|
|
apply plugin: <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'spring-cloud-contract'</span>
|
|
|
|
dependencyManagement {
|
|
imports {
|
|
mavenBom <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"org.springframework.cloud:spring-cloud-contract-dependencies:${verifier_version}"</span>
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
testCompile <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'org.codehaus.groovy:groovy-all:2.4.6'</span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-comment">// example with adding Spock core and Spock Spring</span>
|
|
testCompile <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'org.spockframework:spock-core:1.0-groovy-2.4'</span>
|
|
testCompile <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'org.spockframework:spock-spring:1.0-groovy-2.4'</span>
|
|
testCompile <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'org.springframework.cloud:spring-cloud-starter-contract-verifier'</span>
|
|
}</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_gradle_and_rest_assured_3_0" href="#_gradle_and_rest_assured_3_0"></a>3.1.3 Gradle and Rest Assured 3.0</h3></div></div></div><p>By default Rest Assured 2.x is added to the classpath. However in order to give the users the
|
|
opportunity to use Rest Assured 3.x it’s enough to add it to the plugins classpath.</p><pre class="programlisting">buildscript {
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
dependencies {
|
|
classpath <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"org.springframework.boot:spring-boot-gradle-plugin:${springboot_version}"</span>
|
|
classpath <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"org.springframework.cloud:spring-cloud-contract-gradle-plugin:${verifier_version}"</span>
|
|
classpath <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"io.rest-assured:rest-assured:3.0.2"</span>
|
|
classpath <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"io.rest-assured:spring-mock-mvc:3.0.2"</span>
|
|
}
|
|
}
|
|
|
|
depenendencies {
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-comment">// all dependencies</span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-comment">// you can exclude rest-assured from spring-cloud-contract-verifier</span>
|
|
testCompile <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"io.rest-assured:rest-assured:3.0.2"</span>
|
|
testCompile <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"io.rest-assured:spring-mock-mvc:3.0.2"</span>
|
|
}</pre><p>That way the plugin will automatically see that Rest Assured 3.x is present on the classpath
|
|
and will modify the imports accordingly.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_snapshot_versions_for_gradle" href="#_snapshot_versions_for_gradle"></a>3.1.4 Snapshot versions for Gradle</h3></div></div></div><p>Add the additional snapshot repository to your build.gradle to use snapshot versions which are automatically uploaded after every successful build:</p><pre class="programlisting">buildscript {
|
|
repositories {
|
|
mavenCentral()
|
|
mavenLocal()
|
|
maven { url <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"https://repo.spring.io/snapshot"</span> }
|
|
maven { url <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"https://repo.spring.io/milestone"</span> }
|
|
maven { url <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"https://repo.spring.io/release"</span> }
|
|
}
|
|
}</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_add_stubs" href="#_add_stubs"></a>3.1.5 Add stubs</h3></div></div></div><p>By default Spring Cloud Contract Verifier is looking for stubs in <code class="literal">src/test/resources/contracts</code> directory.</p><p>Directory containing stub definitions is treated as a class name, and each stub definition is treated as a single test.
|
|
We assume that it contains at least one directory which will be used as test class name. If there is more than one level of nested directories all except the last one will be used as package name.
|
|
So with following structure</p><pre class="programlisting">src/test/resources/contracts/myservice/shouldCreateUser.groovy
|
|
src/test/resources/contracts/myservice/shouldReturnUser.groovy</pre><p>Spring Cloud Contract Verifier will create test class <code class="literal">defaultBasePackage.MyService</code> with two methods</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><code class="literal">shouldCreateUser()</code></li><li class="listitem"><code class="literal">shouldReturnUser()</code></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_run_plugin" href="#_run_plugin"></a>3.1.6 Run plugin</h3></div></div></div><p>Plugin registers itself to be invoked before <code class="literal">check</code> task. You have nothing to do as long as you want it to be part of your build process. If you just want to generate tests please invoke <code class="literal">generateContractTests</code> task.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_default_setup" href="#_default_setup"></a>3.1.7 Default setup</h3></div></div></div><p>Default Gradle Plugin setup creates the following Gradle part of the build (it’s a pseudocode)</p><pre class="programlisting">contracts {
|
|
targetFramework = <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'JUNIT'</span>
|
|
testMode = <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'MockMvc'</span>
|
|
generatedTestSourcesDir = project.file(<span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"${project.buildDir}/generated-test-sources/contracts"</span>)
|
|
contractsDslDir = <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"${project.rootDir}/src/test/resources/contracts"</span>
|
|
basePackageForTests = <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'org.springframework.cloud.verifier.tests'</span>
|
|
stubsOutputDir = project.file(<span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"${project.buildDir}/stubs"</span>)
|
|
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-comment">// the following properties are used when you want to provide where the JAR with contract lays</span>
|
|
contractDependency {
|
|
stringNotation = <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">''</span>
|
|
}
|
|
contractsPath = <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">''</span>
|
|
contractsWorkOffline = false
|
|
contractRepository {
|
|
cacheDownloadedContracts(true)
|
|
}
|
|
}
|
|
|
|
tasks.create(type: Jar, name: <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'verifierStubsJar'</span>, dependsOn: <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'generateClientStubs'</span>) {
|
|
baseName = project.name
|
|
classifier = contracts.stubsSuffix
|
|
from contractVerifier.stubsOutputDir
|
|
}
|
|
|
|
project.artifacts {
|
|
archives task
|
|
}
|
|
|
|
tasks.create(type: Copy, name: <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'copyContracts'</span>) {
|
|
from contracts.contractsDslDir
|
|
into contracts.stubsOutputDir
|
|
}
|
|
|
|
verifierStubsJar.dependsOn <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'copyContracts'</span>
|
|
|
|
publishing {
|
|
publications {
|
|
stubs(MavenPublication) {
|
|
artifactId project.name
|
|
artifact verifierStubsJar
|
|
}
|
|
}
|
|
}</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_configure_plugin" href="#_configure_plugin"></a>3.1.8 Configure plugin</h3></div></div></div><p>To change default configuration just add <code class="literal">contracts</code> snippet to your Gradle config</p><pre class="programlisting">contracts {
|
|
testMode = <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'MockMvc'</span>
|
|
baseClassForTests = <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'org.mycompany.tests'</span>
|
|
generatedTestSourcesDir = project.file(<span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'src/generatedContract'</span>)
|
|
}</pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_configuration_options" href="#_configuration_options"></a>3.1.9 Configuration options</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><span class="strong"><strong>testMode</strong></span> - defines mode for acceptance tests. By default MockMvc which is based on Spring’s MockMvc. It can also be changed to <span class="strong"><strong>JaxRsClient</strong></span> or to <span class="strong"><strong>Explicit</strong></span> for real HTTP calls.</li><li class="listitem"><span class="strong"><strong>imports</strong></span> - array with imports that should be included in generated tests (for example ['org.myorg.Matchers']). By default empty array []</li><li class="listitem"><span class="strong"><strong>staticImports</strong></span> - array with static imports that should be included in generated tests(for example ['org.myorg.Matchers.*']). By default empty array []</li><li class="listitem"><span class="strong"><strong>basePackageForTests</strong></span> - specifies base package for all generated tests. By default set to org.springframework.cloud.verifier.tests</li><li class="listitem"><span class="strong"><strong>baseClassForTests</strong></span> - base class for all generated tests. By default <code class="literal">spock.lang.Specification</code> if using Spock tests.</li><li class="listitem"><span class="strong"><strong>packageWithBaseClasses</strong></span> - instead of providing a fixed value for base class you can provide a package where all the base classes lay. Takes precedence over <span class="strong"><strong>baseClassForTests</strong></span>.</li><li class="listitem"><span class="strong"><strong>baseClassMappings</strong></span> - explicitly map contract package to a FQN of a base class. Takes precedence over <span class="strong"><strong>packageWithBaseClasses</strong></span> and <span class="strong"><strong>baseClassForTests</strong></span>.</li><li class="listitem"><span class="strong"><strong>ruleClassForTests</strong></span> - specifies Rule which should be added to generated test classes.</li><li class="listitem"><span class="strong"><strong>ignoredFiles</strong></span> - Ant matcher allowing defining stub files for which processing should be skipped. By default empty array []</li><li class="listitem"><span class="strong"><strong>contractsDslDir</strong></span> - directory containing contracts written using the GroovyDSL. By default <code class="literal">$rootDir/src/test/resources/contracts</code></li><li class="listitem"><span class="strong"><strong>generatedTestSourcesDir</strong></span> - test source directory where tests generated from Groovy DSL should be placed. By default <code class="literal">$buildDir/generated-test-sources/contractVerifier</code></li><li class="listitem"><span class="strong"><strong>stubsOutputDir</strong></span> - dir where the generated WireMock stubs from Groovy DSL should be placed</li><li class="listitem"><span class="strong"><strong>targetFramework</strong></span> - the target test framework to be used; currently Spock and JUnit are supported with JUnit being the default framework</li></ul></div><p>The following properties are used when you want to provide where the JAR with contract lays</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><span class="strong"><strong>contractDependency</strong></span> - the Dependency that provides <code class="literal">groupid:artifactid:version:classifier</code> coordinates. You can use the <code class="literal">contractDependency</code> closure to set it up</li><li class="listitem"><span class="strong"><strong>contractsPath</strong></span> - if contract deps are downloaded will default to <code class="literal">groupid/artifactid</code> where <code class="literal">groupid</code> will be slash separated. Otherwise will scan contracts under provided directory</li><li class="listitem"><span class="strong"><strong>contractsWorkOffline</strong></span> - in order not to download the dependencies each time you can download them once and work offline afterwards (reuse local Maven repo)</li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_single_base_class_for_all_tests" href="#_single_base_class_for_all_tests"></a>3.1.10 Single base class for all tests</h3></div></div></div><p>When using Spring Cloud Contract Verifier in default MockMvc you need to create a base specification for all generated acceptance tests. In this class you need to point to endpoint which should be verified.</p><pre class="programlisting"><span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">abstract</span> <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">class</span> BaseMockMvcSpec <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">extends</span> Specification {
|
|
|
|
def setup() {
|
|
RestAssuredMockMvc.standaloneSetup(<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">new</span> PairIdController())
|
|
}
|
|
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">void</span> isProperCorrelationId(Integer correlationId) {
|
|
assert correlationId == <span class="hl-number">123456</span>
|
|
}
|
|
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">void</span> isEmpty(String value) {
|
|
assert value == null
|
|
}
|
|
|
|
}</pre><p>In case of using <code class="literal">Explicit</code> mode, you can use base class to initialize the whole tested app similarly as in regular integration tests. In case of <code class="literal">JAXRSCLIENT</code> mode this base class
|
|
should also contain <code class="literal">protected WebTarget webTarget</code> field, right now the only option to test JAX-RS API is to start a web server.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_different_base_classes_for_contracts" href="#_different_base_classes_for_contracts"></a>3.1.11 Different base classes for contracts</h3></div></div></div><p>If your base classes differ between contracts you can tell the Spring Cloud Contract plugin which class should get
|
|
extended by the autogenerated tests. You have two options:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">follow a convention by providing the <code class="literal">packageWithBaseClasses</code></li><li class="listitem">provide explicit mapping via <code class="literal">baseClassMappings</code></li></ul></div><p><span class="strong"><strong>Convention</strong></span></p><p>The convention is such that if you have a contract under e.g. <code class="literal">src/test/resources/contract/foo/bar/baz/</code> and provide the value of the <code class="literal">packageWithBaseClasses</code> property
|
|
to <code class="literal">com.example.base</code> then we will assume that there is a <code class="literal">BarBazBase</code> class under <code class="literal">com.example.base</code> package. In other words we take last two parts of package
|
|
if they exist and form a class with a <code class="literal">Base</code> suffix. Takes precedence over <span class="strong"><strong>baseClassForTests</strong></span>. Example of usage in the <code class="literal">contracts</code> closure:</p><pre class="programlisting">packageWithBaseClasses = <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'com.example.base'</span></pre><p><span class="strong"><strong>Mapping</strong></span></p><p>You can manually map a regular expression of the contract’s package to fully qualified name of the base class for the matched contract.
|
|
Let’s take a look at the following example:</p><pre class="programlisting">baseClassForTests = <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"com.example.FooBase"</span>
|
|
baseClassMappings {
|
|
baseClassMapping(<span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'.*/com/.*'</span>, <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'com.example.ComBase'</span>)
|
|
baseClassMapping(<span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'.*/bar/.*'</span>:<span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'com.example.BarBase'</span>)
|
|
}</pre><p>Let’s assume that you have contracts under
|
|
- <code class="literal">src/test/resources/contract/com/</code>
|
|
- <code class="literal">src/test/resources/contract/foo/</code></p><p>By providing the <code class="literal">baseClassForTests</code> we have a fallback in case mapping didn’t succeed (you could also provide
|
|
the <code class="literal">packageWithBaseClasses</code> as fallback). That way the tests generated from <code class="literal">src/test/resources/contract/com/</code> contracts
|
|
will be extending the <code class="literal">com.example.ComBase</code> whereas the rest of tests will extend <code class="literal">com.example.FooBase</code>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_invoking_generated_tests" href="#_invoking_generated_tests"></a>3.1.12 Invoking generated tests</h3></div></div></div><p>To ensure that provider side is complaint with defined contracts, you need to invoke:</p><pre class="programlisting">./gradlew generateContractTests <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">test</span></pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_spring_cloud_contract_verifier_on_consumer_side" href="#_spring_cloud_contract_verifier_on_consumer_side"></a>3.1.13 Spring Cloud Contract Verifier on consumer side</h3></div></div></div><p>In consumer service you need to configure Spring Cloud Contract Verifier plugin in exactly the same way as in case of provider. If you don’t want to use Stub Runner then you need to copy contracts stored in
|
|
<code class="literal">src/test/resources/contracts</code> and generate WireMock json stubs using:</p><pre class="programlisting">./gradlew generateClientStubs</pre><p>Note that <code class="literal">stubsOutputDir</code> option has to be set for stub generation to work.</p><p>When present, json stubs can be used in consumer automated tests.</p><pre class="programlisting"><em><span class="hl-annotation" style="color: gray">@ContextConfiguration(loader == SpringApplicationContextLoader, classes == Application)</span></em>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">class</span> LoanApplicationServiceSpec <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">extends</span> Specification {
|
|
|
|
<em><span class="hl-annotation" style="color: gray">@ClassRule</span></em>
|
|
<em><span class="hl-annotation" style="color: gray">@Shared</span></em>
|
|
WireMockClassRule wireMockRule == <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">new</span> WireMockClassRule()
|
|
|
|
<em><span class="hl-annotation" style="color: gray">@Autowired</span></em>
|
|
LoanApplicationService sut
|
|
|
|
def <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'should successfully apply for loan'</span>() {
|
|
given:
|
|
LoanApplication application =
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">new</span> LoanApplication(client: <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">new</span> Client(clientPesel: <span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">'12345678901'</span>), amount: <span class="hl-number">123.123</span>)
|
|
when:
|
|
LoanApplicationResult loanApplication == sut.loanApplication(application)
|
|
then:
|
|
loanApplication.loanApplicationStatus == LoanApplicationStatus.LOAN_APPLIED
|
|
loanApplication.rejectionReason == null
|
|
}
|
|
}</pre><p>Underneath LoanApplication makes a call to FraudDetection service. This request is handled by WireMock server configured using stubs generated by Spring Cloud Contract Verifier.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_using_in_your_maven_project" href="#_using_in_your_maven_project"></a>3.2 Using in your Maven project</h2></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_add_maven_plugin" href="#_add_maven_plugin"></a>3.2.1 Add maven plugin</h3></div></div></div><p>Add the Spring Cloud Contract BOM</p><pre class="programlisting"><span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><dependencyManagement></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><dependencies></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><dependency></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><groupId></span>org.springframework.cloud<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></groupId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><artifactId></span>spring-cloud-dependencies<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></artifactId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><version></span>${spring-cloud-dependencies.version}<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></version></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><type></span>pom<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></type></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><scope></span>import<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></scope></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></dependency></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></dependencies></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></dependencyManagement></span></pre><p>Next, the <code class="literal">Spring Cloud Contract Verifier</code> Maven plugin</p><pre class="programlisting"><span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><plugin></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><groupId></span>org.springframework.cloud<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></groupId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><artifactId></span>spring-cloud-contract-maven-plugin<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></artifactId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><version></span>${spring-cloud-contract.version}<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></version></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><extensions></span>true<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></extensions></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><configuration></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><packageWithBaseClasses></span>com.example.fraud<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></packageWithBaseClasses></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></configuration></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></plugin></span></pre><p>You can read more in the <a class="link" href="https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract-maven-plugin/" target="_top">Spring Cloud Contract Maven Plugin Docs</a></p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_maven_and_rest_assured_3_0" href="#_maven_and_rest_assured_3_0"></a>3.2.2 Maven and Rest Assured 3.0</h3></div></div></div><p>By default Rest Assured 2.x is added to the classpath. However in order to give the users the
|
|
opportunity to use Rest Assured 3.x it’s enough to add it to the plugins classpath.</p><pre class="programlisting"><plugin>
|
|
<groupId>org.springframework.cloud</groupId>
|
|
<artifactId>spring-cloud-contract-maven-plugin</artifactId>
|
|
<version>${spring-cloud-contract.version}</version>
|
|
<extensions>true</extensions>
|
|
<configuration>
|
|
<packageWithBaseClasses>com.example</packageWithBaseClasses>
|
|
</configuration>
|
|
<dependencies>
|
|
<dependency>
|
|
<groupId>org.springframework.cloud</groupId>
|
|
<artifactId>spring-cloud-contract-verifier</artifactId>
|
|
<version>${spring-cloud-contract.version}</version>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>io.rest-assured</groupId>
|
|
<artifactId>rest-assured</artifactId>
|
|
<version><span class="hl-number">3.0</span>.<span class="hl-number">2</span></version>
|
|
<scope>compile</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>io.rest-assured</groupId>
|
|
<artifactId>spring-mock-mvc</artifactId>
|
|
<version><span class="hl-number">3.0</span>.<span class="hl-number">2</span></version>
|
|
<scope>compile</scope>
|
|
</dependency>
|
|
</dependencies>
|
|
</plugin>
|
|
|
|
<dependencies>
|
|
<!-- all dependencies -->
|
|
<!-- you can exclude rest-assured from spring-cloud-contract-verifier -->
|
|
<dependency>
|
|
<groupId>io.rest-assured</groupId>
|
|
<artifactId>rest-assured</artifactId>
|
|
<version><span class="hl-number">3.0</span>.<span class="hl-number">2</span></version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
<dependency>
|
|
<groupId>io.rest-assured</groupId>
|
|
<artifactId>spring-mock-mvc</artifactId>
|
|
<version><span class="hl-number">3.0</span>.<span class="hl-number">2</span></version>
|
|
<scope>test</scope>
|
|
</dependency>
|
|
</dependencies></pre><p>That way the plugin will automatically see that Rest Assured 3.x is present on the classpath
|
|
and will modify the imports accordingly.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_snapshot_versions_for_maven" href="#_snapshot_versions_for_maven"></a>3.2.3 Snapshot versions for Maven</h3></div></div></div><p>For Snapshot / Milestone versions you have to add the following section to your <code class="literal">pom.xml</code></p><pre class="programlisting"><span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><repositories></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><repository></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><id></span>spring-snapshots<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></id></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><name></span>Spring Snapshots<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></name></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><url></span>https://repo.spring.io/snapshot<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></url></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><snapshots></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><enabled></span>true<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></enabled></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></snapshots></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></repository></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><repository></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><id></span>spring-milestones<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></id></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><name></span>Spring Milestones<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></name></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><url></span>https://repo.spring.io/milestone<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></url></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><snapshots></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><enabled></span>false<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></enabled></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></snapshots></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></repository></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><repository></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><id></span>spring-releases<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></id></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><name></span>Spring Releases<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></name></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><url></span>https://repo.spring.io/release<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></url></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><snapshots></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><enabled></span>false<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></enabled></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></snapshots></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></repository></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></repositories></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><pluginRepositories></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><pluginRepository></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><id></span>spring-snapshots<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></id></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><name></span>Spring Snapshots<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></name></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><url></span>https://repo.spring.io/snapshot<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></url></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><snapshots></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><enabled></span>true<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></enabled></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></snapshots></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></pluginRepository></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><pluginRepository></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><id></span>spring-milestones<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></id></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><name></span>Spring Milestones<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></name></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><url></span>https://repo.spring.io/milestone<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></url></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><snapshots></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><enabled></span>false<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></enabled></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></snapshots></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></pluginRepository></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><pluginRepository></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><id></span>spring-releases<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></id></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><name></span>Spring Releases<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></name></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><url></span>https://repo.spring.io/release<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></url></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><snapshots></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><enabled></span>false<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></enabled></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></snapshots></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></pluginRepository></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></pluginRepositories></span></pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_add_stubs_2" href="#_add_stubs_2"></a>3.2.4 Add stubs</h3></div></div></div><p>By default Spring Cloud Contract Verifier is looking for stubs in <code class="literal">src/test/resources/contracts</code> directory.
|
|
Directory containing stub definitions is treated as a class name, and each stub definition is treated as a single test.
|
|
We assume that it contains at least one directory which will be used as test class name. If there is more than one level of nested directories all except the last one will be used as package name.
|
|
So with following structure</p><pre class="programlisting">src/test/resources/contracts/myservice/shouldCreateUser.groovy
|
|
src/test/resources/contracts/myservice/shouldReturnUser.groovy</pre><p>Spring Cloud Contract Verifier will create test class <code class="literal">defaultBasePackage.MyService</code> with two methods
|
|
- <code class="literal">shouldCreateUser()</code>
|
|
- <code class="literal">shouldReturnUser()</code></p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_run_plugin_2" href="#_run_plugin_2"></a>3.2.5 Run plugin</h3></div></div></div><p>Plugin goal <code class="literal">generateTests</code> is assigned to be invoked in phase <code class="literal">generate-test-sources</code>. You have nothing to do as long as you want it to be part of your build process. If you just want to generate tests please invoke <code class="literal">generateTests</code> goal.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_configure_plugin_2" href="#_configure_plugin_2"></a>3.2.6 Configure plugin</h3></div></div></div><p>To change default configuration just add <code class="literal">configuration</code> section to plugin definition or <code class="literal">execution</code> definition.</p><pre class="programlisting"><span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><plugin></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><groupId></span>org.springframework.cloud<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></groupId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><artifactId></span>spring-cloud-contract-maven-plugin<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></artifactId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><executions></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><execution></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><goals></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><goal></span>convert<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></goal></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><goal></span>generateStubs<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></goal></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><goal></span>generateTests<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></goal></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></goals></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></execution></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></executions></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><configuration></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><basePackageForTests></span>org.springframework.cloud.verifier.twitter.place<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></basePackageForTests></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><baseClassForTests></span>org.springframework.cloud.verifier.twitter.place.BaseMockMvcSpec<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></baseClassForTests></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></configuration></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></plugin></span></pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_important_configuration_options" href="#_important_configuration_options"></a>3.2.7 Important configuration options</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><span class="strong"><strong>testMode</strong></span> - defines mode for acceptance tests. By default <code class="literal">MockMvc</code> which is based on Spring’s MockMvc. It can also be changed to <code class="literal">JaxRsClient</code> or to <code class="literal">Explicit</code> for real HTTP calls.</li><li class="listitem"><span class="strong"><strong>basePackageForTests</strong></span> - specifies base package for all generated tests. By default set to <code class="literal">org.springframework.cloud.verifier.tests</code>.</li><li class="listitem"><span class="strong"><strong>ruleClassForTests</strong></span> - specifies Rule which should be added to generated test classes.</li><li class="listitem"><span class="strong"><strong>baseClassForTests</strong></span> - base class for generated tests. By default <code class="literal">spock.lang.Specification</code> if using Spock tests.</li><li class="listitem"><span class="strong"><strong>contractsDirectory</strong></span> - directory containing contracts written using the GroovyDSL. By default <code class="literal">/src/test/resources/contracts</code>.</li><li class="listitem"><span class="strong"><strong>testFramework</strong></span> - the target test framework to be used; currently Spock and JUnit are supported with JUnit being the default framework</li><li class="listitem"><span class="strong"><strong>packageWithBaseClasses</strong></span> - instead of providing a fixed value for base class you can provide a package where all the base classes lay.
|
|
The convention is such that if you have a contract under <code class="literal">src/test/resources/contract/foo/bar/baz/</code> and provide the value of this property
|
|
to <code class="literal">com.example.base</code> then we will assume that there is a <code class="literal">BarBazBase</code> class under <code class="literal">com.example.base</code> package. Takes precedence
|
|
over <span class="strong"><strong>baseClassForTests</strong></span></li><li class="listitem"><span class="strong"><strong>baseClassMappings</strong></span> - list of base class mappings that where you have to provide <code class="literal">contractPackageRegex</code> which is checked
|
|
against the package in which the contract lays and <code class="literal">baseClassFQN</code> that maps to fully qualified name of the base class for the matched
|
|
contract. If you have a contract under <code class="literal">src/test/resources/contract/foo/bar/baz/</code> and map the property <code class="literal">.*</code> → <code class="literal">com.example.base.BaseClass</code> then
|
|
the test class generated from these contracts will extend <code class="literal">com.example.base.BaseClass</code>. Takes precedence over <span class="strong"><strong>packageWithBaseClasses</strong></span>
|
|
and <span class="strong"><strong>baseClassForTests</strong></span>.</li></ul></div><p>If you want to download your contract definitions from a Maven repository you can use</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><span class="strong"><strong>contractDependency</strong></span> - the contract dependency that contains all the packaged contracts</li><li class="listitem"><span class="strong"><strong>contractsPath</strong></span> - path to concrete contracts in the JAR with packaged contracts. Defaults to <code class="literal">groupid/artifactid</code> where <code class="literal">gropuid</code> is slash separated.</li><li class="listitem"><span class="strong"><strong>contractsWorkOffline</strong></span> - if the dependencies should be downloaded or local Maven only should be reused</li><li class="listitem"><span class="strong"><strong>contractsRepositoryUrl</strong></span> - <span class="strong"><strong>DEPRECATED PROPERTY - please use the <code class="literal">contractRepository</code> closure</strong></span> - URL to a repo with the artifacts with contracts, if not provided should use the current Maven ones</li><li class="listitem"><p class="simpara"><span class="strong"><strong>contractRepository</strong></span> - closure where you can define properties related to repository with contracts</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><span class="strong"><strong>username</strong></span> - username to be used to connect to the repo</li><li class="listitem"><span class="strong"><strong>password</strong></span> - username to be used to connect to the repo</li><li class="listitem"><span class="strong"><strong>proxyHost</strong></span> - proxy host to be used to connect to the repo</li><li class="listitem"><span class="strong"><strong>proxyPort</strong></span> - proxy port to be used to connect to the repo</li><li class="listitem"><span class="strong"><strong>cacheDownloadedContracts</strong></span> - if you want to reuse download JARs that contain contract definitions.
|
|
We cache only non-snapshot, explicitly provided versions (e.g. <code class="literal">+</code> or <code class="literal">1.0.0.BUILD-SNAPSHOT</code> won’t get cached).
|
|
By default this feature is turned on.</li></ul></div></li></ul></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_single_base_class_for_all_tests_2" href="#_single_base_class_for_all_tests_2"></a>3.2.8 Single base class for all tests</h3></div></div></div><p>When using Spring Cloud Contract Verifier in default MockMvc you need to create a base specification for all generated acceptance tests.
|
|
In this class you need to point to endpoint which should be verified.</p><pre class="programlisting"><span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">package</span> org.mycompany.tests
|
|
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">import</span> org.mycompany.ExampleSpringController
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">import</span> com.jayway.restassured.module.mockmvc.RestAssuredMockMvc
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">import</span> spock.lang.Specification
|
|
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">class</span> MvcSpec <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">extends</span> Specification {
|
|
def setup() {
|
|
RestAssuredMockMvc.standaloneSetup(<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">new</span> ExampleSpringController())
|
|
}
|
|
}</pre><p>In case of using <code class="literal">Explicit</code> mode, you can use base class to initialize the whole tested app similarly as in regular integration tests. In case of <code class="literal">JAXRSCLIENT</code> mode this base class should also contain <code class="literal">protected WebTarget webTarget</code> field, right now the only option to test JAX-RS API is to start a web server.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_different_base_classes_for_contracts_2" href="#_different_base_classes_for_contracts_2"></a>3.2.9 Different base classes for contracts</h3></div></div></div><p>If your base classes differ between contracts you can tell the Spring Cloud Contract plugin which class should get
|
|
extended by the autogenerated tests. You have two options:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">follow a convention by providing the <code class="literal">packageWithBaseClasses</code></li><li class="listitem">provide explicit mapping via <code class="literal">baseClassMappings</code></li></ul></div><p><span class="strong"><strong>Convention</strong></span></p><p>The convention is such that if you have a contract under e.g. <code class="literal">src/test/resources/contract/hello/v1/</code> and provide the value of the <code class="literal">packageWithBaseClasses</code> property
|
|
to <code class="literal">hello</code> then we will assume that there is a <code class="literal">HelloV1Base</code> class under <code class="literal">hello</code> package. In other words we take last two parts of package
|
|
if they exist and form a class with a <code class="literal">Base</code> suffix. Takes precedence over <span class="strong"><strong>baseClassForTests</strong></span>. Example of usage:</p><pre class="programlisting"><span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><plugin></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><groupId></span>org.springframework.cloud<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></groupId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><artifactId></span>spring-cloud-contract-maven-plugin<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></artifactId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><configuration></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><packageWithBaseClasses></span>hello<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></packageWithBaseClasses></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></configuration></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></plugin></span></pre><p><span class="strong"><strong>Mapping</strong></span></p><p>You can manually map a regular expression of the contract’s package to fully qualified name of the base class for the matched contract.
|
|
You have to provide a list <code class="literal">baseClassMappings</code> of <code class="literal">baseClassMapping</code> that takes a <code class="literal">contractPackageRegex</code> to <code class="literal">baseClassFQN</code> mapping.
|
|
Let’s take a look at the following example:</p><pre class="programlisting"><span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><plugin></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><groupId></span>org.springframework.cloud<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></groupId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><artifactId></span>spring-cloud-contract-maven-plugin<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></artifactId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><configuration></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><baseClassForTests></span>com.example.FooBase<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></baseClassForTests></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><baseClassMappings></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><baseClassMapping></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><contractPackageRegex></span>.*com.*<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></contractPackageRegex></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><baseClassFQN></span>com.example.TestBase<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></baseClassFQN></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></baseClassMapping></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></baseClassMappings></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></configuration></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></plugin></span></pre><p>Let’s assume that you have contracts under
|
|
- <code class="literal">src/test/resources/contract/com/</code>
|
|
- <code class="literal">src/test/resources/contract/foo/</code></p><p>By providing the <code class="literal">baseClassForTests</code> we have a fallback in case mapping didn’t succeed (you could also provide
|
|
the <code class="literal">packageWithBaseClasses</code> as fallback). That way the tests generated from <code class="literal">src/test/resources/contract/com/</code> contracts
|
|
will be extending the <code class="literal">com.example.ComBase</code> whereas the rest of tests will extend <code class="literal">com.example.FooBase</code>.</p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_invoking_generated_tests_2" href="#_invoking_generated_tests_2"></a>3.2.10 Invoking generated tests</h3></div></div></div><p>Spring Cloud Contract Maven Plugin generates verification code into directory <code class="literal">/generated-test-sources/contractVerifier</code> and attach this directory to <code class="literal">testCompile</code> goal.</p><p>For Groovy Spock code use:</p><pre class="programlisting"><span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><plugin></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><groupId></span>org.codehaus.gmavenplus<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></groupId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><artifactId></span>gmavenplus-plugin<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></artifactId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><version></span>1.5<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></version></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><executions></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><execution></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><goals></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><goal></span>testCompile<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></goal></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></goals></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></execution></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></executions></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><configuration></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><testSources></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><testSource></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><directory></span>${project.basedir}/src/test/groovy<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></directory></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><includes></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><include></span>**/*.groovy<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></include></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></includes></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></testSource></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><testSource></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><directory></span>${project.build.directory}/generated-test-sources/contractVerifier<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></directory></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><includes></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><include></span>**/*.groovy<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></include></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></includes></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></testSource></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></testSources></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></configuration></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></plugin></span></pre><p>To ensure that provider side is complaint with defined contracts, you need to invoke <code class="literal">mvn generateTest test</code></p></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_faq_with_maven_plugin" href="#_faq_with_maven_plugin"></a>3.2.11 FAQ with Maven Plugin</h3></div></div></div></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_maven_plugin_and_sts" href="#_maven_plugin_and_sts"></a>3.2.12 Maven Plugin and STS</h3></div></div></div><p>In case you see the following exception while using STS</p><div class="informalfigure"><div class="mediaobject"><img src="https://raw.githubusercontent.com/spring-cloud/spring-cloud-contract/1.0.x/docs/src/main/asciidoc/images/sts_exception.png" alt="STS Exception"></div></div><p>when you click on the marker you should see sth like this</p><pre class="programlisting"> plugin:<span class="hl-number">1.1</span>.<span class="hl-number">0.</span>M1:convert:default-convert:process-<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">test</span>-resources) org.apache.maven.plugin.PluginExecutionException: Execution default-convert of goal org.springframework.cloud:spring-
|
|
cloud-contract-maven-plugin:<span class="hl-number">1.1</span>.<span class="hl-number">0.</span>M1:convert failed. at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:<span class="hl-number">145</span>) at
|
|
org.eclipse.m2e.core.internal.embedder.MavenImpl.execute(MavenImpl.java:<span class="hl-number">331</span>) at org.eclipse.m2e.core.internal.embedder.MavenImpl$<span class="hl-number">11.</span>call(MavenImpl.java:<span class="hl-number">1362</span>) at
|
|
...
|
|
org.eclipse.core.internal.jobs.Worker.run(Worker.java:<span class="hl-number">55</span>) Caused by: java.lang.NullPointerException at
|
|
org.eclipse.m2e.core.internal.builder.plexusbuildapi.EclipseIncrementalBuildContext.hasDelta(EclipseIncrementalBuildContext.java:<span class="hl-number">53</span>) at
|
|
org.sonatype.plexus.build.incremental.ThreadBuildContext.hasDelta(ThreadBuildContext.java:<span class="hl-number">59</span>) at</pre><p>In order to fix this issue just provide the following section in your <code class="literal">pom.xml</code></p><pre class="programlisting"><span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><build></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><pluginManagement></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><plugins></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-comment"><!--This plugin's configuration is used to store Eclipse m2e settings
|
|
only. It has no influence on the Maven build itself. --></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><plugin></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><groupId></span>org.eclipse.m2e<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></groupId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><artifactId></span>lifecycle-mapping<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></artifactId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><version></span>1.0.0<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></version></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><configuration></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><lifecycleMappingMetadata></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><pluginExecutions></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><pluginExecution></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><pluginExecutionFilter></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><groupId></span>org.springframework.cloud<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></groupId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><artifactId></span>spring-cloud-contract-maven-plugin<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></artifactId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><versionRange></span>[1.0,)<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></versionRange></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><goals></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><goal></span>convert<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></goal></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></goals></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></pluginExecutionFilter></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><action></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><execute /></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></action></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></pluginExecution></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></pluginExecutions></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></lifecycleMappingMetadata></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></configuration></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></plugin></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></plugins></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></pluginManagement></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></build></span></pre></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_spring_cloud_contract_verifier_on_consumer_side_2" href="#_spring_cloud_contract_verifier_on_consumer_side_2"></a>3.2.13 Spring Cloud Contract Verifier on consumer side</h3></div></div></div><p>You can actually use the Spring Cloud Contract Verifier also for the consumer side!
|
|
You can use the plugin so that it only converts the contracts and generates the stubs.
|
|
To achieve that you need to configure Spring Cloud Contract Verifier plugin in exactly
|
|
the same way as in case of provider. You need to copy contracts stored in
|
|
<code class="literal">src/test/resources/contracts</code> and generate WireMock json stubs using:
|
|
<code class="literal">mvn generateStubs</code> command. By default generated WireMock mapping is
|
|
stored in directory <code class="literal">target/mappings</code>. Your project should create from
|
|
this generated mappings additional artifact with classifier <code class="literal">stubs</code> for
|
|
easy deploy to maven repository.</p><p>Sample configuration:</p><pre class="programlisting"><span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><plugin></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><groupId></span>org.springframework.cloud<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></groupId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><artifactId></span>spring-cloud-contract-maven-plugin<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></artifactId></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><version></span>${verifier-plugin.version}<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></version></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><executions></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><execution></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><goals></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><goal></span>convert<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></goal></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"><goal></span>generateStubs<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></goal></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></goals></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></execution></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></executions></span>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-tag"></plugin></span></pre><p>When present, json stubs can be used in consumer automated tests.</p><pre class="programlisting"><em><span class="hl-annotation" style="color: gray">@RunWith(SpringTestRunner.class)</span></em>
|
|
<em><span class="hl-annotation" style="color: gray">@SpringBootTest</span></em>
|
|
<em><span class="hl-annotation" style="color: gray">@AutoConfigureStubRunner</span></em>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">public</span> <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">class</span> LoanApplicationServiceTests {
|
|
|
|
<em><span class="hl-annotation" style="color: gray">@Autowired</span></em>
|
|
LoanApplicationService service;
|
|
|
|
<em><span class="hl-annotation" style="color: gray">@Test</span></em>
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">public</span> <span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">void</span> shouldSuccessfullyApplyForLoan() {
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-comment">//given:</span>
|
|
LoanApplication application =
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">new</span> LoanApplication(<span xmlns:d="http://docbook.org/ns/docbook" class="hl-keyword">new</span> Client(<span xmlns:d="http://docbook.org/ns/docbook" class="hl-string">"12345678901"</span>), <span class="hl-number">123.123</span>);
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-comment">//when:</span>
|
|
LoanApplicationResult loanApplication = service.loanApplication(application);
|
|
<span xmlns:d="http://docbook.org/ns/docbook" class="hl-comment">// then:</span>
|
|
assertThat(loanApplication.loanApplicationStatus).isEqualTo(LoanApplicationStatus.LOAN_APPLIED);
|
|
assertThat(loanApplication.rejectionReason).isNull();
|
|
}
|
|
}</pre><p>Underneath <code class="literal">LoanApplication</code> makes a call to the <code class="literal">FraudDetection</code> service. This request is handled by
|
|
a WireMock server configured using stubs generated by Spring Cloud Contract Verifier.</p></div></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_scenarios" href="#_scenarios"></a>3.3 Scenarios</h2></div></div></div><p>It’s possible to handle scenarios with Spring Cloud Contract Verifier. All you need to do is to stick to proper naming convention while creating your contracts. The convention requires to include order number followed by the underscore.</p><pre class="screen">my_contracts_dir\
|
|
scenario1\
|
|
1_login.groovy
|
|
2_showCart.groovy
|
|
3_logout.groovy</pre><p>Such tree will cause Spring Cloud Contract Verifier generating WireMock’s scenario with name <code class="literal">scenario1</code> and three steps:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">login marked as <code class="literal">Started</code> pointing to:</li><li class="listitem">showCart marked as <code class="literal">Step1</code> pointing to:</li><li class="listitem">logout marked as <code class="literal">Step2</code> which will close the scenario.</li></ul></div><p>More details about WireMock scenarios can be found under <a class="link" href="http://wiremock.org/stateful-behaviour.html" target="_top">http://wiremock.org/stateful-behaviour.html</a></p><p>Spring Cloud Contract Verifier will also generate tests with guaranteed order of execution.</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="_stubs_and_transitive_dependencies" href="#_stubs_and_transitive_dependencies"></a>3.4 Stubs and transitive dependencies</h2></div></div></div><p>The Maven and Gradle plugin that we’re created are adding the tasks that create the stubs jar for you. What can be problematic
|
|
is that when reusing the stubs you can by mistake import all of that stub dependencies! When building a Maven artifact
|
|
even though you have a couple of different jars, all of them share one pom:</p><pre class="programlisting">├── github-webhook-<span class="hl-number">0.0</span>.<span class="hl-number">1.</span>BUILD-<span class="hl-number">20160903.075506</span>-<span class="hl-number">1</span>-stubs.jar
|
|
├── github-webhook-<span class="hl-number">0.0</span>.<span class="hl-number">1.</span>BUILD-<span class="hl-number">20160903.075506</span>-<span class="hl-number">1</span>-stubs.jar.sha1
|
|
├── github-webhook-<span class="hl-number">0.0</span>.<span class="hl-number">1.</span>BUILD-<span class="hl-number">20160903.075655</span>-<span class="hl-number">2</span>-stubs.jar
|
|
├── github-webhook-<span class="hl-number">0.0</span>.<span class="hl-number">1.</span>BUILD-<span class="hl-number">20160903.075655</span>-<span class="hl-number">2</span>-stubs.jar.sha1
|
|
├── github-webhook-<span class="hl-number">0.0</span>.<span class="hl-number">1.</span>BUILD-SNAPSHOT.jar
|
|
├── github-webhook-<span class="hl-number">0.0</span>.<span class="hl-number">1.</span>BUILD-SNAPSHOT.pom
|
|
├── github-webhook-<span class="hl-number">0.0</span>.<span class="hl-number">1.</span>BUILD-SNAPSHOT-stubs.jar
|
|
├── ...
|
|
└── ...</pre><p>There are three possibilities of working with those dependencies so as not to have any issues with transitive dependencies.</p><p><span class="strong"><strong>Mark all application dependencies as optional</strong></span></p><p>If in the <code class="literal">github-webhook</code> application we would mark all of our dependencies as optional, when you include the
|
|
<code class="literal">github-webhook</code> stubs in another application (or when that dependency gets downloaded by Stub Runner) then, since
|
|
all of the depenencies are optional, they will not get downloaded.</p><p><span class="strong"><strong>Create a separate artifactid for stubs</strong></span></p><p>If you create a separate artifactid then you can set it up in whatever way you wish. For example by having no dependencies at all.</p><p><span class="strong"><strong>Exclude dependencies on the consumer side</strong></span></p><p>As a consumer, if you add the stub dependency to your classpath you can explicitly exclude the unwanted dependencies.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="multi__spring_cloud_contract_verifier_introduction.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="multi__spring_cloud_contract_verifier_messaging.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">2. Spring Cloud Contract Verifier Introduction </td><td width="20%" align="center"><a accesskey="h" href="multi_spring-cloud-contract.html">Home</a></td><td width="40%" align="right" valign="top"> 4. Spring Cloud Contract Verifier Messaging</td></tr></table></div></body></html> |