首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Spring shell和boot结合在一起

将Spring shell和boot结合在一起
EN

Stack Overflow用户
提问于 2016-04-11 21:06:40
回答 1查看 4.6K关注 0票数 8

我是Spring的新手,所以在尝试了一整天之后,我需要问一下;)

可以将Spring bootSpring shell组合在一起吗?

我的用例是构建一个jar,其中包含webapp (默认情况下,Spring-boot嵌入jetty或tomcat ),同时能够从shell执行一些项目命令。Quarts不是一个选项。如果这些命令和webapp共享相同的应用程序上下文,那就太好了。

在我的src/main/java中有两个类(加上其他目录中的一些命令和控制器)

Application.java

代码语言:javascript
复制
package dk.mrok.carmonitor;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * Bootstrap webapp
 */
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

Cli.java

代码语言:javascript
复制
package dk.mrok.carmonitor;

import java.io.IOException;
import org.springframework.shell.Bootstrap;

public class Cli {

    /**
     * Main class that delegates to Spring Shell's Bootstrap class in order to simplify debugging inside an IDE
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        Bootstrap.main(args);
    }

}

这是我的构建脚本:

代码语言:javascript
复制
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.3.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'spring-boot'
apply plugin: 'application'
apply plugin: 'idea'

jar {
    baseName = 'carmonitor-backend'
    version =  '0.0.1'
}

repositories {
    mavenCentral()
    maven {url 'https://repo.spring.io/libs-snapshot'}
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

mainClassName = "dk.mrok.carmonitor.Cli"

dependencies {
    compile 'org.springframework.shell:spring-shell:1.2.0.BUILD-SNAPSHOT'
    compile "org.springframework.boot:spring-boot-starter-web"
    testCompile "junit:junit"
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.3'
}

不幸的是,最终得到的jar是spring-shell项目,而不是webapp。

执行./build/script/carmonitor (我期望在这里使用shell项目)输出

代码语言:javascript
复制
Error: Could not find or load main class dk.mrok.carmonitor.Cli

有什么建议吗?我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2017-03-22 09:17:00

This project on Github为我工作。我克隆了存储库,构建了项目并在本地安装。然后将其用作依赖项。

另一种方式是here,它们将所有Spring-Shell核心组件以及JLineShellComponent和CommandLine的bean添加到引导ApplicationContext中。然而,当我尝试它时,它导致了堆栈溢出。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36549603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档