Spring Boot CLI - Quick Guide


Advertisements

Spring Boot CLI - Overview

The Spring Boot CLI is a Command Line Interface for Spring Boot. It can be used for a quick start with Spring. It can run Groovy scripts which means that a developer need not write boilerplate code; all that is needed is focus on business logic. Spring Boot CLI is the fastest way to create a Spring-based application.

Features

In this section, we will look at the different features of Spring Boot CL −

  • It provides an interface to run and test Spring Boot Application from command prompt.

  • It internally use Spring Boot Starter and Spring Boot AutoConfigurate components in order to resolve all dependencies and executes the application.

  • It contains Groovy compiler and Grape Dependency Manager.

  • It supports Groovy Scripts without external Groovy installation.

  • It adds Spring Boot defaults and resolve all dependencies automatically.

Spring Boot CLI - Environment Setup

Spring is a Java-based framework; hence, we need to set up JDK first. Following are the steps needed to setup Spring Boot CLI along with JDK installation.

Step 1 - Setup Java Development Kit (JDK)

You can download the latest version of SDK from Oracle's Java site − Java SE Downloads. You will find instructions for installing JDK in downloaded files, follow the given instructions to install and configure the setup. Finally set PATH and JAVA_HOME environment variables to refer to the directory that contains java and javac, typically java_install_dir/bin and java_install_dir respectively.

If you are running Windows and have installed the JDK in C:\jdk1.6.0_15, you would have to put the following line in your C:\autoexec.bat file −

set PATH=C:\jdk1.6.0_15\bin;%PATH% 
set JAVA_HOME=C:\jdk1.6.0_15 

Alternatively, on Windows NT/2000/XP, you will have to right-click on My Computer, select Properties → Advanced → Environment Variables. Then, you will have to update the PATH value and click the OK button.

On Unix (Solaris, Linux, etc.), if the SDK is installed in /usr/local/jdk1.6.0_15 and you use the C shell, you will have to put the following into your .cshrc file −

setenv PATH /usr/local/jdk1.6.0_15/bin:$PATH 
setenv JAVA_HOME /usr/local/jdk1.6.0_15 

Step 2 - Install Spring Boot CLI

You can download the latest version of Spring Boot CLI API as ZIP archive from https://repo.spring.io/release/org/springframework/boot/spring-boot-cli/. Once you download the installation, unpack the zip distribution into a convenient location. For example, in E:\Test\spring-1.5.8.RELEASE on Windows, or /usr/local/spring-1.5.8.RELEASE on Linux/Unix.

Make sure you set your CLASSPATH variable on this directory properly otherwise you will face a problem while running your application.

Or set the path in command prompt temporarily to run the spring boot application as shown below −

E:/Test/> set path=E:\Test\spring-1.5.8.RELEASE\bin;%PATH%

Step 3 - Verify installation

Run the following command on command prompt to verify the installation −

E:/Test/> spring --version

It should print the following output confirming the successful installation −

Spring CLI v1.5.8.RELEASE

Spring Boot CLI - Hello World Example

In this example, we'll create a Spring Boot + MVC + Rest based Web application.

Step 1: Create source Folder

Create a folder FirstApplication in E:\Test folder.

Step 2: Create Source File

Create FirstApplication.groovy file in E:\Test folder with following source code −

@RestController
class FirstApplication {
   @RequestMapping("/")
   
   String welcome() {
      "Welcome to Howcodex.Com"
   }
}

Step 3: Run the application

Type the following command −

E:/Test/> spring run FirstApplication.groovy

Now Spring Boot CLI will come into action, download required dependencies, run the embedded tomcat, deploy the application and start it. You can see the following output on console −

Resolving dependencies..........................................................
................................................................................
........................

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _> | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.8.RELEASE)

2017-11-07 17:36:55.703  INFO 5528 --- [       runner-0] o.s.boot.SpringApplication: 
Starting application on ...
2017-11-07 17:36:55.707  INFO 5528 --- [       runner-0] o.s.boot.SpringApplication: 
No active profile set, falling back to default profiles: default
2017-11-07 17:36:56.067  INFO 5528 --- [       runner-0] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4c108392: startup date [Tue Nov 07 17:36:
56 IST 2017]; root of context hierarchy
2017-11-07 17:36:57.327  INFO 5528 --- [       runner-0] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2017-11-07 17:36:57.346  INFO 5528 --- [       runner-0] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2017-11-07 17:36:57.354  INFO 5528 --- [       runner-0] org.apache.catalina.core.StandardEngine  : Starting Servlet Engine: Apache Tomcat/8.5.23
2017-11-07 17:36:57.537  INFO 5528 --- [ost-startStop-1] org.apache.catalina.loader.WebappLoader  : Unknown loader org.springframework.boot.cli.compiler.ExtendedGroovyClassLoader$DefaultScopeParentClassLoader@41bfad4f class org.springframew
ork.boot.cli.compiler.ExtendedGroovyClassLoader$DefaultScopeParentClassLoader
2017-11-07 17:36:57.567  INFO 5528 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2017-11-07 17:36:57.567  INFO 5528 --- [ost-startStop-1] o.s.web.context.ContextLoader            : Root WebApplicationContext: initialization completed in 1500 ms
2017-11-07 17:36:57.725  INFO 5528 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean  : Mapping servlet: 'dispatcherServlet' to [/]
2017-11-07 17:36:57.730  INFO 5528 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'characterEncodingFilter' to: [/*]
2017-11-07 17:36:57.730  INFO 5528 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2017-11-07 17:36:57.730  INFO 5528 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2017-11-07 17:36:57.730  INFO 5528 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean   : Mapping filter: 'requestContextFilter' to: [/*]
2017-11-07 17:36:58.012  INFO 5528 --- [       runner-0] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@4c108392: startup date [Tue Nov 07 17:36:56 IST 2017]; root of context hierarchy
2017-11-07 17:36:58.066  INFO 5528 --- [       runner-0] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/]}" onto public java.lang.String FirstApplication.home()
2017-11-07 17:36:58.070  INFO 5528 --- [       runner-0] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2017-11-07 17:36:58.071  INFO 5528 --- [       runner-0] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web
.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2017-11-07 17:36:58.096  INFO 5528 --- [       runner-0] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-11-07 17:36:58.096  INFO 5528 --- [       runner-0] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-11-07 17:36:58.129  INFO 5528 --- [       runner-0] o.s.w.s.handler.SimpleUrlHandlerMapping  : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-11-07 17:36:58.626  INFO 5528 --- [       runner-0] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2017-11-07 17:36:58.696  INFO 5528 --- [       runner-0] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-11-07 17:36:58.699  INFO 5528 --- [       runner-0] o.s.boot.SpringApplication               : Started application in 3.529 seconds (JVM running for 190.196)
2017-11-07 17:37:20.217  INFO 5528 --- [nio-8080-exec-1] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring FrameworkServlet 'dispatcherServlet'
2017-11-07 17:37:20.218  INFO 5528 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization started

2017-11-07 17:37:20.238  INFO 5528 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : FrameworkServlet 'dispatcherServlet': initialization completed in 20 ms

Step 4: Browse the application in Browser

Our spring based rest application is now ready. Open url as "http://localhost:8080/" and you will see the following output −

Hello World

Important points

Consider the following points to understand how Spring CLI works.−

  • All dependency JARs are downloaded for the first time only.

  • Spring CLI automatically detects which dependency JARs are to be downloaded based on the classes and annotations used in code.

  • Finally after the compilation of the code, deploy the war file on an embedded tomcat and start embedded tomcat server on the default port 8080.

"grab" Dependency Deduction

Standard Groovy codebase contains a @Grab annotation so that dependencies on third-party libraries can be declared. Using @Grab annotation, Grape Dependency Manager downloads jar in similar fashion as that of Maven/Gradle without any build tool. Spring Boot attempts to deduce the required libraries based on code. For example, use of @RestController tells that "Tomcat" and "Spring MVC" libraries are to be grabbed.

Grab Hints

Following table details the hints that Spring Boot uses to download third party libraries −

Sr.No. Hint & Dependency to Download/Link
1

JdbcTemplate, NamedParameterJdbcTemplate, DataSource

JDBC Application

2

@EnableJms

JMS Application

3

@EnableCaching

Caching abstraction

4

@Test

JUnit

5

@EnableRabbit

RabbitMQ

6

@EnableReactor

Project Reactor

7

extends Specification

Spock test

8

@EnableBatchProcessing

Spring Batch

9

@MessageEndpoint, @EnableIntegrationPatterns

Spring Integration

10

@EnableDeviceResolver

Spring Mobile

11

@Controller, @RestController, @EnableWebMvc

Spring MVC + Embedded Tomcat

12

@EnableWebSecurity

Spring Security

13

@EnableTransactionManagement

Spring Transaction Management

"grab" Co-ordinates Deduction

We can specify a dependency using @Grab annotation even without specifying group or version. For example,

@Grab('antlr')

Now Spring Boot CLI will download 2.7.7 version of antlr as it is present in Spring Boot's default dependency metadata for 1.5.8 version. Spring Boot maintains all dependency versions by default which are provided in its CLI, Maven dependency management and Gradle plugin. Whenever we declare a dependency of any of those artifacts present in efault dependency metadata without declaring a version, the version listed in its table will be used.

The following table shows all the dependencies and their versions included in the default metadata for Spring Boot CLI 1.5.8 version.

Group Id Artifact Id Version
antlr antlr 2.7.7
ch.qos.logback logback-access 1.1.11
ch.qos.logback logback-classic 1.1.11
ch.qos.logback logback-core 1.1.11
com.atomikos transactions-jdbc 3.9.3
com.atomikos transactions-jms 3.9.3
com.atomikos transactions-jta 3.9.3
com.couchbase.client couchbase-spring-cache 2.1.0
com.couchbase.client java-client 2.3.7
com.datastax.cassandra cassandra-driver-core 3.1.4
com.datastax.cassandra cassandra-driver-mapping 3.1.4
com.fasterxml classmate 1.3.4
com.fasterxml.jackson.core jackson-annotations 2.8.0
com.fasterxml.jackson.core jackson-core 2.8.10
com.fasterxml.jackson.core jackson-databind 2.8.10
com.fasterxml.jackson.dataformat jackson-dataformat-avro 2.8.10
com.fasterxml.jackson.dataformat jackson-dataformat-cbor 2.8.10
com.fasterxml.jackson.dataformat jackson-dataformat-csv 2.8.10
com.fasterxml.jackson.dataformat jackson-dataformat-ion 2.8.10
com.fasterxml.jackson.dataformat jackson-dataformat-properties 2.8.10
com.fasterxml.jackson.dataformat jackson-dataformat-protobuf 2.8.10
com.fasterxml.jackson.dataformat jackson-dataformat-smile 2.8.10
com.fasterxml.jackson.dataformat jackson-dataformat-xml 2.8.10
com.fasterxml.jackson.dataformat jackson-dataformat-yaml 2.8.10
com.fasterxml.jackson.datatype jackson-datatype-guava 2.8.10
com.fasterxml.jackson.datatype jackson-datatype-hibernate3 2.8.10
com.fasterxml.jackson.datatype jackson-datatype-hibernate4 2.8.10
com.fasterxml.jackson.datatype jackson-datatype-hibernate5 2.8.10
com.fasterxml.jackson.datatype jackson-datatype-hppc 2.8.10
com.fasterxml.jackson.datatype jackson-datatype-jaxrs 2.8.10
com.fasterxml.jackson.datatype jackson-datatype-jdk8 2.8.10
com.fasterxml.jackson.datatype jackson-datatype-joda 2.8.10
com.fasterxml.jackson.datatype jackson-datatype-json-org 2.8.10
com.fasterxml.jackson.datatype jackson-datatype-jsr310 2.8.10
com.fasterxml.jackson.datatype jackson-datatype-jsr353 2.8.10
com.fasterxml.jackson.datatype jackson-datatype-pcollections 2.8.10
com.fasterxml.jackson.jaxrs jackson-jaxrs-base 2.8.10
com.fasterxml.jackson.jaxrs jackson-jaxrs-cbor-provider 2.8.10
com.fasterxml.jackson.jaxrs jackson-jaxrs-json-provider 2.8.10
com.fasterxml.jackson.jaxrs jackson-jaxrs-smile-provider 2.8.10
com.fasterxml.jackson.jaxrs jackson-jaxrs-xml-provider 2.8.10
com.fasterxml.jackson.jaxrs jackson-jaxrs-yaml-provider 2.8.10
com.fasterxml.jackson.jr jackson-jr-all 2.8.10
com.fasterxml.jackson.jr jackson-jr-objects 2.8.10
com.fasterxml.jackson.jr jackson-jr-retrofit2 2.8.10
com.fasterxml.jackson.jr jackson-jr-stree 2.8.10
com.fasterxml.jackson.module jackson-module-afterburner 2.8.10
com.fasterxml.jackson.module jackson-module-guice 2.8.10
com.fasterxml.jackson.module jackson-module-jaxb-annotations 2.8.10
com.fasterxml.jackson.module jackson-module-jsonSchema 2.8.10
com.fasterxml.jackson.module jackson-module-kotlin 2.8.10
com.fasterxml.jackson.module jackson-module-mrbean 2.8.10
com.fasterxml.jackson.module jackson-module-osgi 2.8.10
com.fasterxml.jackson.module jackson-module-parameter-names 2.8.10
com.fasterxml.jackson.module jackson-module-paranamer 2.8.10
com.fasterxml.jackson.module jackson-module-scala_2.10 2.8.10
com.fasterxml.jackson.module jackson-module-scala_2.11 2.8.10
com.fasterxml.jackson.module jackson-module-scala_2.12 2.8.10
com.gemstone.gemfire gemfire 8.2.7
com.github.ben-manes.caffeine caffeine 2.3.5
com.github.mxab.thymeleaf.extras thymeleaf-extras-data-attribute 1.3
com.google.appengine appengine-api-1.0-sdk 1.9.58
com.google.code.gson gson 2.8.2
com.googlecode.json-simple json-simple 1.1.1
com.h2database h2 1.4.196
com.hazelcast hazelcast 3.7.8
com.hazelcast hazelcast-client 3.7.8
com.hazelcast hazelcast-hibernate4 3.7.1
com.hazelcast hazelcast-hibernate5 1.1.3
com.hazelcast hazelcast-spring 3.7.8
com.jayway.jsonpath json-path 2.2.0
com.jayway.jsonpath json-path-assert 2.2.0
com.microsoft.sqlserver mssql-jdbc 6.1.0.jre7
com.querydsl querydsl-apt 4.1.4
com.querydsl querydsl-collections 4.1.4
com.querydsl querydsl-core 4.1.4
com.querydsl querydsl-jpa 4.1.4
com.querydsl querydsl-mongodb 4.1.4
com.samskivert jmustache 1.13
com.sendgrid sendgrid-java 2.2.2
com.sun.mail javax.mail 1.5.6
com.timgroup java-statsd-client 3.1.0
com.unboundid unboundid-ldapsdk 3.2.1
com.zaxxer HikariCP 2.5.1
com.zaxxer HikariCP-java6 2.3.13
com.zaxxer HikariCP-java7 2.4.13
commons-beanutils commons-beanutils 1.9.3
commons-codec commons-codec 1.10
commons-collections commons-collections 3.2.2
commons-dbcp commons-dbcp 1.4
commons-digester commons-digester 2.1
commons-pool commons-pool 1.6
de.flapdoodle.embed de.flapdoodle.embed.mongo 1.50.5
dom4j dom4j 1.6.1
io.dropwizard.metrics metrics-annotation 3.1.5
io.dropwizard.metrics metrics-core 3.1.5
io.dropwizard.metrics metrics-ehcache 3.1.5
io.dropwizard.metrics metrics-ganglia 3.1.5
io.dropwizard.metrics metrics-graphite 3.1.5
io.dropwizard.metrics metrics-healthchecks 3.1.5
io.dropwizard.metrics metrics-httpasyncclient 3.1.5
io.dropwizard.metrics metrics-jdbi 3.1.5
io.dropwizard.metrics metrics-jersey 3.1.5
io.dropwizard.metrics metrics-jersey2 3.1.5
io.dropwizard.metrics metrics-jetty8 3.1.5
io.dropwizard.metrics metrics-jetty9 3.1.5
io.dropwizard.metrics metrics-jetty9-legacy 3.1.5
io.dropwizard.metrics metrics-json 3.1.5
io.dropwizard.metrics metrics-jvm 3.1.5
io.dropwizard.metrics metrics-log4j 3.1.5
io.dropwizard.metrics metrics-log4j2 3.1.5
io.dropwizard.metrics metrics-logback 3.1.5
io.dropwizard.metrics metrics-servlet 3.1.5
io.dropwizard.metrics metrics-servlets 3.1.5
io.projectreactor reactor-bus 2.0.8.RELEASE
io.projectreactor reactor-core 2.0.8.RELEASE
io.projectreactor reactor-groovy 2.0.8.RELEASE
io.projectreactor reactor-groovy-extensions 2.0.8.RELEASE
io.projectreactor reactor-logback 2.0.8.RELEASE
io.projectreactor reactor-net 2.0.8.RELEASE
io.projectreactor reactor-stream 2.0.8.RELEASE
io.projectreactor.spring reactor-spring-context 2.0.7.RELEASE
io.projectreactor.spring reactor-spring-core 2.0.7.RELEASE
io.projectreactor.spring reactor-spring-messaging 2.0.7.RELEASE
io.projectreactor.spring reactor-spring-webmvc 2.0.7.RELEASE
io.searchbox jest 2.0.4
io.undertow undertow-core 1.4.20.Final
io.undertow undertow-servlet 1.4.20.Final
io.undertow undertow-websockets-jsr 1.4.20.Final
javax.cache cache-api 1.0.0
javax.jms jms-api 1.1-rev-1
javax.mail javax.mail-api 1.5.6
javax.servlet javax.servlet-api 3.1.0
javax.servlet jstl 1.2
javax.transaction javax.transaction-api 1.2
javax.validation validation-api 1.1.0.Final
jaxen jaxen 1.1.6
joda-time joda-time 2.9.9
junit junit 4.12
mysql mysql-connector-java 5.1.44
net.java.dev.jna jna 4.2.2
net.java.dev.jna jna-platform 4.2.2
net.sf.ehcache ehcache 2.10.4
net.sourceforge.htmlunit htmlunit 2.21
net.sourceforge.jtds jtds 1.3.1
net.sourceforge.nekohtml nekohtml 1.9.22
nz.net.ultraq.thymeleaf thymeleaf-layout-dialect 1.4.0
org.apache.activemq activemq-amqp 5.14.5
org.apache.activemq activemq-blueprint 5.14.5
org.apache.activemq activemq-broker 5.14.5
org.apache.activemq activemq-camel 5.14.5
org.apache.activemq activemq-client 5.14.5
org.apache.activemq activemq-console 5.14.5
org.apache.activemq activemq-http 5.14.5
org.apache.activemq activemq-jaas 5.14.5
org.apache.activemq activemq-jdbc-store 5.14.5
org.apache.activemq activemq-jms-pool 5.14.5
org.apache.activemq activemq-kahadb-store 5.14.5
org.apache.activemq activemq-karaf 5.14.5
org.apache.activemq activemq-leveldb-store 5.14.5
org.apache.activemq activemq-log4j-appender 5.14.5
org.apache.activemq activemq-mqtt 5.14.5
org.apache.activemq activemq-openwire-generator 5.14.5
org.apache.activemq activemq-openwire-legacy 5.14.5
org.apache.activemq activemq-osgi 5.14.5
org.apache.activemq activemq-partition 5.14.5
org.apache.activemq activemq-pool 5.14.5
org.apache.activemq activemq-ra 5.14.5
org.apache.activemq activemq-run 5.14.5
org.apache.activemq activemq-runtime-config 5.14.5
org.apache.activemq activemq-shiro 5.14.5
org.apache.activemq activemq-spring 5.14.5
org.apache.activemq activemq-stomp 5.14.5
org.apache.activemq activemq-web 5.14.5
org.apache.activemq artemis-amqp-protocol 1.5.5
org.apache.activemq artemis-commons 1.5.5
org.apache.activemq artemis-core-client 1.5.5
org.apache.activemq artemis-jms-client 1.5.5
org.apache.activemq artemis-jms-server 1.5.5
org.apache.activemq artemis-journal 1.5.5
org.apache.activemq artemis-native 1.5.5
org.apache.activemq artemis-selector 1.5.5
org.apache.activemq artemis-server 1.5.5
org.apache.activemq artemis-service-extensions 1.5.5
org.apache.commons commons-dbcp2 2.1.1
org.apache.commons commons-pool2 2.4.2
org.apache.derby derby 10.13.1.1
org.apache.httpcomponents httpasyncclient 4.1.3
org.apache.httpcomponents httpclient 4.5.3
org.apache.httpcomponents httpcore 4.4.8
org.apache.httpcomponents httpmime 4.5.3
org.apache.logging.log4j log4j-1.2-api 2.7
org.apache.logging.log4j log4j-api 2.7
org.apache.logging.log4j log4j-api-scala_2.10 2.7
org.apache.logging.log4j log4j-api-scala_2.11 2.7
org.apache.logging.log4j log4j-core 2.7
org.apache.logging.log4j log4j-flume-ng 2.7
org.apache.logging.log4j log4j-iostreams 2.7
org.apache.logging.log4j log4j-jcl 2.7
org.apache.logging.log4j log4j-jmx-gui 2.7
org.apache.logging.log4j log4j-jul 2.7
org.apache.logging.log4j log4j-liquibase 2.7
org.apache.logging.log4j log4j-nosql 2.7
org.apache.logging.log4j log4j-slf4j-impl 2.7
org.apache.logging.log4j log4j-taglib 2.7
org.apache.logging.log4j log4j-web 2.7
org.apache.solr solr-analysis-extras 5.5.4
org.apache.solr solr-analytics 5.5.4
org.apache.solr solr-cell 5.5.4
org.apache.solr solr-clustering 5.5.4
org.apache.solr solr-core 5.5.4
org.apache.solr solr-dataimporthandler 5.5.4
org.apache.solr solr-dataimporthandler-extras 5.5.4
org.apache.solr solr-langid 5.5.4
org.apache.solr solr-map-reduce 5.5.4
org.apache.solr solr-morphlines-cell 5.5.4
org.apache.solr solr-morphlines-core 5.5.4
org.apache.solr solr-solrj 5.5.4
org.apache.solr solr-test-framework 5.5.4
org.apache.solr solr-uima 5.5.4
org.apache.solr solr-velocity 5.5.4
org.apache.tomcat tomcat-annotations-api 8.5.23
org.apache.tomcat tomcat-jdbc 8.5.23
org.apache.tomcat tomcat-jsp-api 8.5.23
org.apache.tomcat.embed tomcat-embed-core 8.5.23
org.apache.tomcat.embed tomcat-embed-el 8.5.23
org.apache.tomcat.embed tomcat-embed-jasper 8.5.23
org.apache.tomcat.embed tomcat-embed-websocket 8.5.23
org.aspectj aspectjrt 1.8.11
org.aspectj aspectjtools 1.8.11
org.aspectj aspectjweaver 1.8.11
org.assertj assertj-core 2.6.0
org.codehaus.btm btm 2.1.4
org.codehaus.groovy groovy 2.4.12
org.codehaus.groovy groovy-all 2.4.12
org.codehaus.groovy groovy-ant 2.4.12
org.codehaus.groovy groovy-bsf 2.4.12
org.codehaus.groovy groovy-console 2.4.12
org.codehaus.groovy groovy-docgenerator 2.4.12
org.codehaus.groovy groovy-groovydoc 2.4.12
org.codehaus.groovy groovy-groovysh 2.4.12
org.codehaus.groovy groovy-jmx 2.4.12
org.codehaus.groovy groovy-json 2.4.12
org.codehaus.groovy groovy-jsr223 2.4.12
org.codehaus.groovy groovy-nio 2.4.12
org.codehaus.groovy groovy-servlet 2.4.12
org.codehaus.groovy groovy-sql 2.4.12
org.codehaus.groovy groovy-swing 2.4.12
org.codehaus.groovy groovy-templates 2.4.12
org.codehaus.groovy groovy-test 2.4.12
org.codehaus.groovy groovy-testng 2.4.12
org.codehaus.groovy groovy-xml 2.4.12
org.codehaus.janino janino 2.7.8
org.crashub crash.cli 1.3.2
org.crashub crash.connectors.ssh 1.3.2
org.crashub crash.connectors.telnet 1.3.2
org.crashub crash.embed.spring 1.3.2
org.crashub crash.plugins.cron 1.3.2
org.crashub crash.plugins.mail 1.3.2
org.crashub crash.shell 1.3.2
org.eclipse.jetty apache-jsp 9.4.7.v20170914
org.eclipse.jetty apache-jstl 9.4.7.v20170914
org.eclipse.jetty jetty-alpn-client 9.4.7.v20170914
org.eclipse.jetty jetty-alpn-java-client 9.4.7.v20170914
org.eclipse.jetty jetty-alpn-java-server 9.4.7.v20170914
org.eclipse.jetty jetty-alpn-server 9.4.7.v20170914
org.eclipse.jetty jetty-annotations 9.4.7.v20170914
org.eclipse.jetty jetty-ant 9.4.7.v20170914
org.eclipse.jetty jetty-client 9.4.7.v20170914
org.eclipse.jetty jetty-continuation 9.4.7.v20170914
org.eclipse.jetty jetty-deploy 9.4.7.v20170914
org.eclipse.jetty jetty-hazelcast 9.4.7.v20170914
org.eclipse.jetty jetty-http 9.4.7.v20170914
org.eclipse.jetty jetty-http-spi 9.4.7.v20170914
org.eclipse.jetty jetty-infinispan 9.4.7.v20170914
org.eclipse.jetty jetty-io 9.4.7.v20170914
org.eclipse.jetty jetty-jaas 9.4.7.v20170914
org.eclipse.jetty jetty-jaspi 9.4.7.v20170914
org.eclipse.jetty jetty-jmx 9.4.7.v20170914
org.eclipse.jetty jetty-jndi 9.4.7.v20170914
org.eclipse.jetty jetty-nosql 9.4.7.v20170914
org.eclipse.jetty jetty-plus 9.4.7.v20170914
org.eclipse.jetty jetty-proxy 9.4.7.v20170914
org.eclipse.jetty jetty-quickstart 9.4.7.v20170914
org.eclipse.jetty jetty-rewrite 9.4.7.v20170914
org.eclipse.jetty jetty-runner 9.4.7.v20170914
org.eclipse.jetty jetty-security 9.4.7.v20170914
org.eclipse.jetty jetty-server 9.4.7.v20170914
org.eclipse.jetty jetty-servlet 9.4.7.v20170914
org.eclipse.jetty jetty-servlets 9.4.7.v20170914
org.eclipse.jetty jetty-spring 9.4.7.v20170914
org.eclipse.jetty jetty-start 9.4.7.v20170914
org.eclipse.jetty jetty-unixsocket 9.4.7.v20170914
org.eclipse.jetty jetty-util 9.4.7.v20170914
org.eclipse.jetty jetty-util-ajax 9.4.7.v20170914
org.eclipse.jetty jetty-webapp 9.4.7.v20170914
org.eclipse.jetty jetty-xml 9.4.7.v20170914
org.eclipse.jetty.cdi cdi-core 9.4.7.v20170914
org.eclipse.jetty.cdi cdi-servlet 9.4.7.v20170914
org.eclipse.jetty.fcgi fcgi-client 9.4.7.v20170914
org.eclipse.jetty.fcgi fcgi-server 9.4.7.v20170914
org.eclipse.jetty.gcloud jetty-gcloud-session-manager 9.4.7.v20170914
org.eclipse.jetty.http2 http2-client 9.4.7.v20170914
org.eclipse.jetty.http2 http2-common 9.4.7.v20170914
org.eclipse.jetty.http2 http2-hpack 9.4.7.v20170914
org.eclipse.jetty.http2 http2-http-client-transport 9.4.7.v20170914
org.eclipse.jetty.http2 http2-server 9.4.7.v20170914
org.eclipse.jetty.memcached jetty-memcached-sessions 9.4.7.v20170914
org.eclipse.jetty.orbit javax.servlet.jsp 2.2.0.v201112011158
org.eclipse.jetty.osgi jetty-httpservice 9.4.7.v20170914
org.eclipse.jetty.osgi jetty-osgi-boot 9.4.7.v20170914
org.eclipse.jetty.osgi jetty-osgi-boot-jsp 9.4.7.v20170914
org.eclipse.jetty.osgi jetty-osgi-boot-warurl 9.4.7.v20170914
org.eclipse.jetty.websocket javax-websocket-client-impl 9.4.7.v20170914
org.eclipse.jetty.websocket javax-websocket-server-impl 9.4.7.v20170914
org.eclipse.jetty.websocket websocket-api 9.4.7.v20170914
org.eclipse.jetty.websocket websocket-client 9.4.7.v20170914
org.eclipse.jetty.websocket websocket-common 9.4.7.v20170914
org.eclipse.jetty.websocket websocket-server 9.4.7.v20170914
org.eclipse.jetty.websocket websocket-servlet 9.4.7.v20170914
org.ehcache ehcache 3.2.3
org.ehcache ehcache-clustered 3.2.3
org.ehcache ehcache-transactions 3.2.3
org.elasticsearch elasticsearch 2.4.6
org.firebirdsql.jdbc jaybird-jdk16 2.2.13
org.firebirdsql.jdbc jaybird-jdk17 2.2.13
org.firebirdsql.jdbc jaybird-jdk18 2.2.13
org.flywaydb flyway-core 3.2.1
org.freemarker freemarker 2.3.26-incubating
org.glassfish javax.el 3.0.0
org.glassfish.jersey.bundles.repackaged jersey-guava 2.25.1
org.glassfish.jersey.containers jersey-container-servlet 2.25.1
org.glassfish.jersey.containers jersey-container-servlet-core 2.25.1
org.glassfish.jersey.core jersey-client 2.25.1
org.glassfish.jersey.core jersey-common 2.25.1
org.glassfish.jersey.core jersey-server 2.25.1
org.glassfish.jersey.ext jersey-bean-validation 2.25.1
org.glassfish.jersey.ext jersey-entity-filtering 2.25.1
org.glassfish.jersey.ext jersey-spring3 2.25.1
org.glassfish.jersey.media jersey-media-jaxb 2.25.1
org.glassfish.jersey.media jersey-media-json-jackson 2.25.1
org.glassfish.jersey.media jersey-media-multipart 2.25.1
org.hamcrest hamcrest-core 1.3
org.hamcrest hamcrest-library 1.3
org.hibernate hibernate-core 5.0.12.Final
org.hibernate hibernate-ehcache 5.0.12.Final
org.hibernate hibernate-entitymanager 5.0.12.Final
org.hibernate hibernate-envers 5.0.12.Final
org.hibernate hibernate-java8 5.0.12.Final
org.hibernate hibernate-jpamodelgen 5.0.12.Final
org.hibernate hibernate-validator 5.3.5.Final
org.hibernate hibernate-validator-annotation-processor 5.3.5.Final
org.hsqldb hsqldb 2.3.5
org.infinispan infinispan-jcache 8.2.8.Final
org.infinispan infinispan-spring4-common 8.2.8.Final
org.infinispan infinispan-spring4-embedded 8.2.8.Final
org.javassist javassist 3.21.0-GA
org.jboss jboss-transaction-spi 7.6.0.Final
org.jboss.logging jboss-logging 3.3.1.Final
org.jboss.narayana.jta jdbc 5.5.30.Final
org.jboss.narayana.jta jms 5.5.30.Final
org.jboss.narayana.jta jta 5.5.30.Final
org.jboss.narayana.jts narayana-jts-integration 5.5.30.Final
org.jdom jdom2 2.0.6
org.jolokia jolokia-core 1.3.7
org.jooq jooq 3.9.6
org.jooq jooq-codegen 3.9.6
org.jooq jooq-meta 3.9.6
org.json json 20140107
org.liquibase liquibase-core 3.5.3
org.mariadb.jdbc mariadb-java-client 1.5.9
org.mockito mockito-core 1.10.19
org.mongodb mongodb-driver 3.4.3
org.mongodb mongo-java-driver 3.4.3
org.mortbay.jasper apache-el 8.0.33
org.neo4j neo4j-ogm-api 2.1.5
org.neo4j neo4j-ogm-compiler 2.1.5
org.neo4j neo4j-ogm-core 2.1.5
org.neo4j neo4j-ogm-http-driver 2.1.5
org.postgresql postgresql 9.4.1212.jre7
org.projectlombok lombok 1.16.18
org.seleniumhq.selenium htmlunit-driver 2.21
org.seleniumhq.selenium selenium-api 2.53.1
org.seleniumhq.selenium selenium-chrome-driver 2.53.1
org.seleniumhq.selenium selenium-firefox-driver 2.53.1
org.seleniumhq.selenium selenium-ie-driver 2.53.1
org.seleniumhq.selenium selenium-java 2.53.1
org.seleniumhq.selenium selenium-remote-driver 2.53.1
org.seleniumhq.selenium selenium-safari-driver 2.53.1
org.seleniumhq.selenium selenium-support 2.53.1
org.skyscreamer jsonassert 1.4.0
org.slf4j jcl-over-slf4j 1.7.25
org.slf4j jul-to-slf4j 1.7.25
org.slf4j log4j-over-slf4j 1.7.25
org.slf4j slf4j-api 1.7.25
org.slf4j slf4j-ext 1.7.25
org.slf4j slf4j-jcl 1.7.25
org.slf4j slf4j-jdk14 1.7.25
org.slf4j slf4j-log4j12 1.7.25
org.slf4j slf4j-nop 1.7.25
org.slf4j slf4j-simple 1.7.25
org.spockframework spock-core 1.0-groovy-2.4
org.spockframework spock-spring 1.0-groovy-2.4
org.springframework spring-aop 4.3.12.RELEASE
org.springframework spring-aspects 4.3.12.RELEASE
org.springframework spring-beans 4.3.12.RELEASE
org.springframework spring-context 4.3.12.RELEASE
org.springframework spring-context-support 4.3.12.RELEASE
org.springframework spring-core 4.3.12.RELEASE
org.springframework spring-expression 4.3.12.RELEASE
org.springframework spring-instrument 4.3.12.RELEASE
org.springframework spring-instrument-tomcat 4.3.12.RELEASE
org.springframework spring-jdbc 4.3.12.RELEASE
org.springframework spring-jms 4.3.12.RELEASE
org.springframework springloaded 1.2.8.RELEASE
org.springframework spring-messaging 4.3.12.RELEASE
org.springframework spring-orm 4.3.12.RELEASE
org.springframework spring-oxm 4.3.12.RELEASE
org.springframework spring-test 4.3.12.RELEASE
org.springframework spring-tx 4.3.12.RELEASE
org.springframework spring-web 4.3.12.RELEASE
org.springframework spring-webmvc 4.3.12.RELEASE
org.springframework spring-webmvc-portlet 4.3.12.RELEASE
org.springframework spring-websocket 4.3.12.RELEASE
org.springframework.amqp spring-amqp 1.7.4.RELEASE
org.springframework.amqp spring-rabbit 1.7.4.RELEASE
org.springframework.batch spring-batch-core 3.0.8.RELEASE
org.springframework.batch spring-batch-infrastructure 3.0.8.RELEASE
org.springframework.batch spring-batch-integration 3.0.8.RELEASE
org.springframework.batch spring-batch-test 3.0.8.RELEASE
org.springframework.boot spring-boot 1.5.8.RELEASE
org.springframework.boot spring-boot-actuator 1.5.8.RELEASE
org.springframework.boot spring-boot-actuator-docs 1.5.8.RELEASE
org.springframework.boot spring-boot-autoconfigure 1.5.8.RELEASE
org.springframework.boot spring-boot-autoconfigure-processor 1.5.8.RELEASE
org.springframework.boot spring-boot-configuration-metadata 1.5.8.RELEASE
org.springframework.boot spring-boot-configuration-processor 1.5.8.RELEASE
org.springframework.boot spring-boot-devtools 1.5.8.RELEASE
org.springframework.boot spring-boot-loader 1.5.8.RELEASE
org.springframework.boot spring-boot-loader-tools 1.5.8.RELEASE
org.springframework.boot spring-boot-starter 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-activemq 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-actuator 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-amqp 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-aop 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-artemis 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-batch 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-cache 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-cloud-connectors 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-data-cassandra 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-data-couchbase 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-data-elasticsearch 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-data-gemfire 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-data-jpa 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-data-ldap 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-data-mongodb 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-data-neo4j 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-data-redis 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-data-rest 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-data-solr 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-freemarker 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-groovy-templates 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-hateoas 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-integration 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-jdbc 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-jersey 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-jetty 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-jooq 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-jta-atomikos 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-jta-bitronix 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-jta-narayana 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-log4j2 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-logging 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-mail 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-mobile 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-mustache 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-remote-shell 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-security 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-social-facebook 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-social-linkedin 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-social-twitter 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-test 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-thymeleaf 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-tomcat 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-undertow 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-validation 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-web 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-web-services 1.5.8.RELEASE
org.springframework.boot spring-boot-starter-websocket 1.5.8.RELEASE
org.springframework.boot spring-boot-test 1.5.8.RELEASE
org.springframework.boot spring-boot-test-autoconfigure 1.5.8.RELEASE
org.springframework.cloud spring-cloud-cloudfoundry-connector 1.2.4.RELEASE
org.springframework.cloud spring-cloud-core 1.2.4.RELEASE
org.springframework.cloud spring-cloud-heroku-connector 1.2.4.RELEASE
org.springframework.cloud spring-cloud-localconfig-connector 1.2.4.RELEASE
org.springframework.cloud spring-cloud-spring-service-connector 1.2.4.RELEASE
org.springframework.data spring-cql 1.5.8.RELEASE
org.springframework.data spring-data-cassandra 1.5.8.RELEASE
org.springframework.data spring-data-commons 1.13.8.RELEASE
org.springframework.data spring-data-couchbase 2.2.8.RELEASE
org.springframework.data spring-data-elasticsearch 2.1.8.RELEASE
org.springframework.data spring-data-envers 1.1.8.RELEASE
org.springframework.data spring-data-gemfire 1.9.8.RELEASE
org.springframework.data spring-data-jpa 1.11.8.RELEASE
org.springframework.data spring-data-keyvalue 1.2.8.RELEASE
org.springframework.data spring-data-ldap 1.0.8.RELEASE
org.springframework.data spring-data-mongodb 1.10.8.RELEASE
org.springframework.data spring-data-mongodb-cross-store 1.10.8.RELEASE
org.springframework.data spring-data-mongodb-log4j 1.10.8.RELEASE
org.springframework.data spring-data-neo4j 4.2.8.RELEASE
org.springframework.data spring-data-redis 1.8.8.RELEASE
org.springframework.data spring-data-rest-core 2.6.8.RELEASE
org.springframework.data spring-data-rest-hal-browser 2.6.8.RELEASE
org.springframework.data spring-data-rest-webmvc 2.6.8.RELEASE
org.springframework.data spring-data-solr 2.1.8.RELEASE
org.springframework.hateoas spring-hateoas 0.23.0.RELEASE
org.springframework.integration spring-integration-amqp 4.3.12.RELEASE
org.springframework.integration spring-integration-core 4.3.12.RELEASE
org.springframework.integration spring-integration-event 4.3.12.RELEASE
org.springframework.integration spring-integration-feed 4.3.12.RELEASE
org.springframework.integration spring-integration-file 4.3.12.RELEASE
org.springframework.integration spring-integration-ftp 4.3.12.RELEASE
org.springframework.integration spring-integration-gemfire 4.3.12.RELEASE
org.springframework.integration spring-integration-groovy 4.3.12.RELEASE
org.springframework.integration spring-integration-http 4.3.12.RELEASE
org.springframework.integration spring-integration-ip 4.3.12.RELEASE
org.springframework.integration spring-integration-java-dsl 1.2.3.RELEASE
org.springframework.integration spring-integration-jdbc 4.3.12.RELEASE
org.springframework.integration spring-integration-jms 4.3.12.RELEASE
org.springframework.integration spring-integration-jmx 4.3.12.RELEASE
org.springframework.integration spring-integration-jpa 4.3.12.RELEASE
org.springframework.integration spring-integration-mail 4.3.12.RELEASE
org.springframework.integration spring-integration-mongodb 4.3.12.RELEASE
org.springframework.integration spring-integration-mqtt 4.3.12.RELEASE
org.springframework.integration spring-integration-redis 4.3.12.RELEASE
org.springframework.integration spring-integration-rmi 4.3.12.RELEASE
org.springframework.integration spring-integration-scripting 4.3.12.RELEASE
org.springframework.integration spring-integration-security 4.3.12.RELEASE
org.springframework.integration spring-integration-sftp 4.3.12.RELEASE
org.springframework.integration spring-integration-stomp 4.3.12.RELEASE
org.springframework.integration spring-integration-stream 4.3.12.RELEASE
org.springframework.integration spring-integration-syslog 4.3.12.RELEASE
org.springframework.integration spring-integration-test 4.3.12.RELEASE
org.springframework.integration spring-integration-twitter 4.3.12.RELEASE
org.springframework.integration spring-integration-websocket 4.3.12.RELEASE
org.springframework.integration spring-integration-ws 4.3.12.RELEASE
org.springframework.integration spring-integration-xml 4.3.12.RELEASE
org.springframework.integration spring-integration-xmpp 4.3.12.RELEASE
org.springframework.integration spring-integration-zookeeper 4.3.12.RELEASE
org.springframework.kafka spring-kafka 1.1.7.RELEASE
org.springframework.kafka spring-kafka-test 1.1.7.RELEASE
org.springframework.ldap spring-ldap-core 2.3.2.RELEASE
org.springframework.ldap spring-ldap-core-tiger 2.3.2.RELEASE
org.springframework.ldap spring-ldap-ldif-batch 2.3.2.RELEASE
org.springframework.ldap spring-ldap-ldif-core 2.3.2.RELEASE
org.springframework.ldap spring-ldap-odm 2.3.2.RELEASE
org.springframework.ldap spring-ldap-test 2.3.2.RELEASE
org.springframework.mobile spring-mobile-device 1.1.5.RELEASE
org.springframework.plugin spring-plugin-core 1.2.0.RELEASE
org.springframework.plugin spring-plugin-metadata 1.2.0.RELEASE
org.springframework.restdocs spring-restdocs-core 1.1.3.RELEASE
org.springframework.restdocs spring-restdocs-mockmvc 1.1.3.RELEASE
org.springframework.restdocs spring-restdocs-restassured 1.1.3.RELEASE
org.springframework.retry spring-retry 1.2.1.RELEASE
org.springframework.security spring-security-acl 4.2.3.RELEASE
org.springframework.security spring-security-aspects 4.2.3.RELEASE
org.springframework.security spring-security-cas 4.2.3.RELEASE
org.springframework.security spring-security-config 4.2.3.RELEASE
org.springframework.security spring-security-core 4.2.3.RELEASE
org.springframework.security spring-security-crypto 4.2.3.RELEASE
org.springframework.security spring-security-data 4.2.3.RELEASE
org.springframework.security spring-security-jwt 1.0.8.RELEASE
org.springframework.security spring-security-ldap 4.2.3.RELEASE
org.springframework.security spring-security-messaging 4.2.3.RELEASE
org.springframework.security spring-security-openid 4.2.3.RELEASE
org.springframework.security spring-security-remoting 4.2.3.RELEASE
org.springframework.security spring-security-taglibs 4.2.3.RELEASE
org.springframework.security spring-security-test 4.2.3.RELEASE
org.springframework.security spring-security-web 4.2.3.RELEASE
org.springframework.security.oauth spring-security-oauth 2.0.14.RELEASE
org.springframework.security.oauth spring-security-oauth2 2.0.14.RELEASE
org.springframework.session spring-session 1.3.1.RELEASE
org.springframework.session spring-session-data-gemfire 1.3.1.RELEASE
org.springframework.session spring-session-data-mongo 1.3.1.RELEASE
org.springframework.session spring-session-data-redis 1.3.1.RELEASE
org.springframework.session spring-session-hazelcast 1.3.1.RELEASE
org.springframework.session spring-session-jdbc 1.3.1.RELEASE
org.springframework.social spring-social-config 1.1.4.RELEASE
org.springframework.social spring-social-core 1.1.4.RELEASE
org.springframework.social spring-social-facebook 2.0.3.RELEASE
org.springframework.social spring-social-facebook-web 2.0.3.RELEASE
org.springframework.social spring-social-linkedin 1.0.2.RELEASE
org.springframework.social spring-social-security 1.1.4.RELEASE
org.springframework.social spring-social-twitter 1.1.2.RELEASE
org.springframework.social spring-social-web 1.1.4.RELEASE
org.springframework.ws spring-ws-core 2.4.0.RELEASE
org.springframework.ws spring-ws-security 2.4.0.RELEASE
org.springframework.ws spring-ws-support 2.4.0.RELEASE
org.springframework.ws spring-ws-test 2.4.0.RELEASE
org.thymeleaf thymeleaf 2.1.5.RELEASE
org.thymeleaf thymeleaf-spring4 2.1.5.RELEASE
org.thymeleaf.extras thymeleaf-extras-conditionalcomments 2.1.2.RELEASE
org.thymeleaf.extras thymeleaf-extras-java8time 2.1.0.RELEASE
org.thymeleaf.extras thymeleaf-extras-springsecurity4 2.1.3.RELEASE
org.webjars hal-browser 9f96c74
org.webjars webjars-locator 0.32-1
org.xerial sqlite-jdbc 3.15.1
org.yaml snakeyaml 1.17
redis.clients jedis 2.9.0
wsdl4j wsdl4j 1.6.3
xml-apis xml-apis 1.4.01

Spring Boot CLI - Default Statements

In this chapter, we will learn about the Default Statements in Spring Boot CLI. To begin with, we will learn about the Default Imports.

Default Imports

Spring CLI automatically imports many libraries by default so that explicit imports are not required. Let us now consider the following groovy script to understand Default Imports.

@RestController
class FirstApplication {
   @RequestMapping("/")
   
   String welcome() {
      "Welcome to Howcodex.Com"
   }
}

Here import for @RestController, @RequestMapping annotations are already included by default by Spring Boot. We're not even require to use fully-qualified names. You can check by running the application.

Type the following command −

E:/Test/> spring run FirstApplication.groovy

The above command will generate the following output on console −

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _> | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.8.RELEASE)

...
2017-11-07 19:22:17.310  INFO 4824 --- [       runner-0] o.s.boot.SpringApplication
: Started application in 3.405 seconds (JVM running for 7.021)

Automatic Main Method

We are not required to create standard main method for groovy script to initialize a spring application. It is automatically created for spring boot application.

Spring Boot CLI - Starter Thymeleaf Project

In this chapter, we will learn how to create a sample Thymeleaf-based project to demonstrate the capabilities of Spring CLI. Follow the below mentioned step to create a sample project −

Sr.No Step & Description
1 Create a Folder with a name TestApplication with subfolders templates and static.
2 Create message.groovy in TestApplication folder, message.html in templates folder, index.html in static folder as explained below.
3 Compile and run the application to verify the result of the implemented logic.

TestApplication/message.groovy

@Controller
@Grab('spring-boot-starter-thymeleaf')

class MessageController {
   @RequestMapping("/message")
   
   String getMessage(Model model) {
      String message = "Welcome to Howcodex.Com!";
      model.addAttribute("message", message);
      return "message";
   }
} 

TestApplication/templates/message.html

<!DOCTYPE HTML>
<html xmlns:th = "http://www.thymeleaf.org">
   <head> 
      <title>Spring Boot CLI Example</title> 
      <meta http-equiv = "Content-Type" content = "text/html; charset = UTF-8" />
   </head>
   
   <body> 
      <p th:text = "'Message: ' + ${message}" />
   </body>
</html> 

TestApplication/static/index.html

<!DOCTYPE HTML>
<html>
   <head> 
      <title>Spring Boot CLI Example</title> 
      <meta http-equiv = "Content-Type" content = "text/html; charset = UTF-8" />
   </head>
   
   <body>
      <p>Go to <a href = "/msg">Message</a></p>
   </body>
</html> 

Run the application

To run the application, type the following command −

E:/Test/TestApplication/> spring run *.groovy

Now Spring Boot CLI will come into action, download required dependencies, run the embedded tomcat, deploy the application and start it. You can see the following output on console −

Resolving dependencies.............................

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _> | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.8.RELEASE)

...
2017-11-08 16:27:28.300  INFO 8360 --- [       runner-0] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-11-08 16:27:28.305  INFO 8360 --- [       runner-0] o.s.boot.SpringApplication               : Started application in 4.203 seconds (JVM running for 38.792)

Browse the application in Browser

Our spring based rest application is now ready. Open url as "http://localhost:8080/" and you will see the following output −

Go to Message

Click on the Message link and you will see the following output −

Message − Welcome to Howcodex.Com!

Important points

Consider the following points to understand the actions taken by Spring CLI −

  • The @Grab('spring-boot-starter-thymeleaf') annotation directs CLI to download spring-boot-starter-thymeleaf 1.5.8.RELEASE version.

  • Spring CLI automatically detects the version using its metadata, as we have not specified any group id or version id here.

  • Finally after code compilation, deploy the war on a embedded tomcat, start embedded tomcat server on the default port 8080.

Spring Boot CLI - Testing Application

In this chapter, we will test the sample project created in Hello World Example Chapter to demonstrate the testing capabilities of Spring CLI. Follow the steps listed in the table below to test the sample project −

Sr.No Step & Description
1 Create FirstApplication.groovy and TestFirstApplication.groovy in Test folder as explained below.
2 Compile and run the application to verify the result of the implemented logic.

FirstApplication/FirstApplication.groovy

@RestController
class FirstApplication {
   @RequestMapping("/")
   
   String welcome() {
      "Welcome to Howcodex.Com"
   }
} 

FirstApplication/TestFirstApplication.groovy

class TestFirstApplication {
   @Test
   void welcomeTest() {
      assertEquals("Welcome to Howcodex.Com", new FirstApplication().welcome())
   }
} 

Run the application

To run the application, type the following command −

E:/Test/FirstApplication/> spring test FirstApplication.groovy TestFirstApplication.groovy

Now Spring Boot CLI will come into action, download the required dependencies, compile the source and test file and unit test the code. The following output will be generated on console −

Resolving dependencies........................................................
.
Time: 0.457

OK (1 test)

Important points

Consider the following points to understand the actions taken by Spring CLI −

  • The @Test annotation directs CLI to download JUnit 4.12 version.

  • Spring CLI automatically detects the version using its metadata, as we have not specified any dependency.

  • Finally, after code compilation, test the application.

Spring Boot CLI - Packaging Application

Spring boot CLI provides jar command in order to package a application as jar file. Let us test the sample project created in Starter Thymeleaf Project Chapter to demonstrate the packaging capabilities of Spring CLI.

Follow the steps describe below to package the sample project −

Package the application

To package the application, begin by typing the following command −

E:/Test/TestApplication/> spring jar TestApplication.jar *.groovy 

Output

The command will print the following output −

E:/Test/TestApplication/> spring jar TestApplication.jar *.groovy 

Output

Now you can see two new files created in TestApplication folder.

  • TestApplication.jar − An executable jar file.

  • TestApplication.jar.original − Original jar file.

Include/Exclude

By default following directories are included along with their contents −

  • public
  • resources
  • static
  • templates
  • META-INF

By default, following directories are excluded along with their contents −

  • repository
  • build
  • target
  • *.jar files
  • *.groovy files

Using --include, we can include directories excluded otherwise. Using --exclude, we can exclude directories included otherwise.

Running the Executable Jar

To run the executable Jar, type the following command −

E:/Test/TestApplication/> java -jar TestApplication.jar

The above command will generate the following output on console −

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _> | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.8.RELEASE)

...
2017-11-08 16:27:28.300  INFO 8360 --- [       runner-0] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-11-08 16:27:28.305  INFO 8360 --- [       runner-0] o.s.boot.SpringApplication               : Started application in 4.203 seconds (JVM running for 38.792)

Browse the application in Browser

Our spring-based rest application is now ready. Open url as "http://localhost:8080/" and you will see the following output −

Go to Message

Click on Message link and you will see the following output −

Message: Welcome to Howcodex.Com!

Spring Boot CLI - Creating Project

Spring Boot CLI can be used to create a new project with maven as default build tool using init command. Maven will use https://start.spring.io service. In following example we'll create a web application using thymeleaf. Go to E:\Test folder and type the following command −

E:/Test> spring init --dependencies = web,thymeleaf MavenApplication.zip

The above command will generate the following output −

Using service at https://start.spring.io
Content saved to MavenApplication.zip

Create Gradle project

We can create a Gradle based project as well by setting --build as gradle. To understand this in a better way, consider the example given below. Go to E:\Test folder and type the following command −

E:/Test> spring init --build = gradle --java-version = 1.8 --dependencies = web,thymeleaf --packaging = war GradleApplication.zip

The above command will generate the following output −

Using service at https://start.spring.io
Content saved to GradleApplication.zip

Spring Boot CLI - Using Shell

Spring Boot CLI provides a Shell interface to run the commands in which we can directly run the commands as shown below. Go to E:\Test folder and type the following command −

E:/Test> spring shell

The above command will generate the following output −

?[1mSpring Boot?[m?[2m (v1.5.8.RELEASE)?[m
Hit TAB to complete. Type 'help' and hit RETURN for help, and 'exit' to quit.

Running commands in Shell

In this section, we will learn how to run commands in Shell. Type the following and see the output −

version
Spring CLI v1.5.8.RELEASE

You can press tab to auto complete the commands and type exit to finish the shell console.

Testing the application in shell

Let us now learn how to test the application in shell. Type the following line of code and see the output −

E:\Test\FirstApplication>spring shell
?[1mSpring Boot?[m?[2m (v1.5.8.RELEASE)?[m
Hit TAB to complete. Type 'help' and hit RETURN for help, and 'exit' to quit.
$ test FirstApplication.groovy TestFirstApplication.groovy
.
Time: 0.347

OK (1 test)

$ exit
E:\Test\FirstApplication>
Advertisements