Spring Shell with Spring Boot Driven
- Add spring-boot-starter-shell dependency in application's pom.xml:
<dependency>
<groupId>org.mvnsearch.spring.boot</groupId>
<artifactId>spring-boot-starter-shell</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
- Add Spring Boot Maven Plugin in your pom.xml:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.4.0.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- do not enable it, this will creats a non standard jar and cause autoconfig to fail -->
<executable>false</executable>
</configuration>
</plugin>
- Add following code in your Spring Boot Application main method:
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringShellApplication.run(DemoApplication.class, args);
}
}
- Of course, create your Spring Shell commands.
@Component
public class HelloCommands implements CommandMarker {
@CliCommand(value = "hello", help = "CMS ")
public String hello() {
return "hello";
}
}
- Build your application and run it.
$ mvn -DskipTests clean package
$ java -jar target/xxxx.jar
- Possible Configuration in your application.properties:
spring.main.banner-mode=off
- logback-spring.xml configuration to mute some log:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!--stdout appender-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="ERROR">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>
- Spring Shell Document: http://docs.spring.io/spring-shell/docs/current/reference/htmlsingle/
- ASCII Generator: http://www.network-science.de/ascii/