Spring Boot CLI provides Spring Boot command line features for
+Spring Cloud. You can write Groovy scripts to run Spring Cloud component applications
+(e.g. @EnableEurekaServer). You can also easily do things like encryption and decryption to support Spring Cloud
+Config clients with secret configuration values.
Installation
+To install, make +sure you have +Spring Boot CLI +(1.2.0 or better):
+$ spring version +Spring CLI v1.2.3.RELEASE+
E.g. for GVM users
+$ gvm install springboot 1.2.3.RELEASE
+$ gvm use springboot 1.2.3.RELEASE
+and install the Spring Cloud plugin:
+$ mvn install
+$ spring install org.springframework.cloud:spring-cloud-cli:1.0.2.RELEASE
+|
+ Important
+ |
++Prerequisites: to use the encryption and decryption features +you need the full-strength JCE installed in your JVM (it’s not there by default). +You can download the "Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files" +from Oracle, and follow instructions for installation (essentially replace the 2 policy files +in the JRE lib/security directory with the ones that you downloaded). + | +
Writing Groovy Scripts and Running Applications
+Spring Cloud CLI has support for most of the Spring Cloud declarative
+features, such as the @Enable* class of annotations. For example,
+here is a fully functional Eureka server
@EnableEurekaServer
+class Eureka {}
+which you can run from the command line like this
+$ spring run app.groovy+
To include additional dependencies, often it suffices just to add the
+appropriate feature-enabling annotation, e.g. @EnableConfigServer,
+@EnableOAuth2Sso or @EnableEurekaClient. To manually include a
+dependency you can use a @Grab with the special "Spring Boot" short
+style artifact co-ordinates, i.e. with just the artifact ID (no need
+for group or version information), e.g. to set up a client app to
+listen on AMQP for management events from the Spring CLoud Bus:
@Grab('spring-cloud-starter-bus-amqp')
+@RestController
+class Service {
+ @RequestMapping('/')
+ def home() { [message: 'Hello'] }
+}
+Encryption and Decryption
+The Spring Cloud CLI comes with an "encrypt" and a "decrypt" +command. Both accept arguments in the same form with a key specified +as a mandatory "--key", e.g.
+$ spring encrypt mysecret --key foo +682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda +$ spring decrypt --key foo 682bc583f4641835fa2db009355293665d2647dade3375c0ee201de2a49f7bda +mysecret+
To use a key in a file (e.g. an RSA public key for encyption) prepend +the key value with "@" and provide the file path, e.g.
+$ spring encrypt mysecret --key @${HOME}/.ssh/id_rsa.pub
+AQAjPgt3eFZQXwt8tsHAVv/QHiY5sI2dRcR+...
+