broc3po
broc3po

Reputation: 3

Spring Shell - usage and execution

I want to integrate Spring Shell within a spring boot application. I am able to execute the examples from the official git-repo. But when migrating the example code to my own project that is very very similar to this code, my individual shell is not shown or usable. Instead the default Spring Shell splash is shown is usable:

<SpringShell ASCII-Art>
1.1.0.RELEASE

Welcome to Spring Shell. For assistance press or type "hint" then hit ENTER
spring-shell>

Compilation gives no errors, but the individual sample @component marked classes are not used. All annotations are properly set. A standard loader outside is existent. I am not executing the code in an IDE.

Although the documentation (chapter 3.5) tells, that the components are automatically collected as far as i understood.

So my question is more or less how to setup the usage better than this:

public class Main {
    public static void main(String[] args) throws Exception {
        Bootstrap.main(args);
    }
}

And to defeat the default splash!

Upvotes: 0

Views: 1856

Answers (2)

broc3po
broc3po

Reputation: 3

SOLUTION:

ebottard's answer brought me to the point of creating a "spring-shell-plugin.xml" under resources\META-INF\spring\... Although the component scan was set externally already, this seems to be necessary. The following code shows how to start it up within an Spring Boot Application where CommandLineRunner is implemented. This should bridge starting problems.

@Component
public class CLIBean implements CommandLineRunner {

    @Override
    public void run(String... args) throws Exception {
        Bootstrap bootstrap = new Bootstrap();
        bootstrap.run();
    }

}

Upvotes: 0

ebottard
ebottard

Reputation: 1997

That comment in the documentation is a bit misleading (I'll change it). For your components to be picked up, they need to be on the classpath AND you'll need to scan for them somehow.

See for example how in the Spring XD project, there is a scan for the org.springframework.xd.shell package. You need to do something similar for your own package.

Upvotes: 1

Related Questions