私は春が初めてなので、一日中失敗を試みた後、質問する必要があります;)
スプリングブーツとスプリングシェルを組み合わせることはできますか?
私の使用例は、webapp (Spring-boot にはデフォルトで jetty または tomcat が組み込まれています) を含む jar を構築し、同時にシェルからいくつかのプロジェクト コマンドを実行することです。Quarts はオプションではありません。これらのコマンドと webapp が同じアプリケーション コンテキストを共有するのは素晴らしいことです。
私の src/main/java には 2 つのクラスがあります (さらに、他のディレクトリにいくつかのコマンドとコントローラーがあります)
アプリケーション.java
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
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);
}
}
これは私のビルドスクリプトです:
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 は webapp ではなく、Spring-Shell プロジェクトです。
./build/script/carmonitor を実行すると (ここでシェル プロジェクトを想定していました)、出力が出力されます
Error: Could not find or load main class dk.mrok.carmonitor.Cli
私は何を間違っていますか?