diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index be2e05a83..02af96f85 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -34,6 +34,7 @@ dependencies { implementation("org.springframework:spring-core") implementation 'org.asciidoctor:asciidoctor-gradle-jvm:3.3.2' implementation 'org.jfrog.buildinfo:build-info-extractor-gradle:4.29.0' + implementation "org.springframework.boot:org.springframework.boot.gradle.plugin:${springBootVersion}" } gradlePlugin { diff --git a/buildSrc/src/main/java/org/springframework/statemachine/gradle/SamplePlugin.java b/buildSrc/src/main/java/org/springframework/statemachine/gradle/SamplePlugin.java index 2ced68ba4..2e602feb9 100644 --- a/buildSrc/src/main/java/org/springframework/statemachine/gradle/SamplePlugin.java +++ b/buildSrc/src/main/java/org/springframework/statemachine/gradle/SamplePlugin.java @@ -19,6 +19,7 @@ import org.gradle.api.Project; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.PluginManager; +import org.springframework.boot.gradle.plugin.SpringBootPlugin; /** * @author Janne Valkealahti @@ -30,6 +31,7 @@ public void apply(Project project) { PluginManager pluginManager = project.getPluginManager(); pluginManager.apply(JavaPlugin.class); pluginManager.apply(ManagementConfigurationPlugin.class); + pluginManager.apply(SpringBootPlugin.class); new JavaConventions().apply(project); new EclipseConventions().apply(project); } diff --git a/spring-statemachine-platform/spring-statemachine-platform.gradle b/spring-statemachine-platform/spring-statemachine-platform.gradle index 50b44bd27..a14b37b9c 100644 --- a/spring-statemachine-platform/spring-statemachine-platform.gradle +++ b/spring-statemachine-platform/spring-statemachine-platform.gradle @@ -10,10 +10,10 @@ description = 'Spring Statemachine BOM' dependencies { api platform("org.springframework.boot:spring-boot-dependencies:$springBootVersion") + api platform("org.springframework.shell:spring-shell-dependencies:$springShellVersion") constraints { api "com.google.code.findbugs:jsr305:$findbugsVersion" api "com.esotericsoftware:kryo-shaded:$kryoVersion" - api "org.springframework.shell:spring-shell-core:$springShellVersion" api "jakarta.persistence:jakarta.persistence-api:$jakartaPersistenceVersion" api "org.eclipse.uml2:uml:$eclipseUml2UmlVersion" api "org.eclipse.uml2:types:$eclipseUml2TypesVersion" diff --git a/spring-statemachine-samples/showcase/spring-statemachine-samples-showcase.gradle b/spring-statemachine-samples/showcase/spring-statemachine-samples-showcase.gradle index a5c573771..523e6ba6a 100644 --- a/spring-statemachine-samples/showcase/spring-statemachine-samples-showcase.gradle +++ b/spring-statemachine-samples/showcase/spring-statemachine-samples-showcase.gradle @@ -8,7 +8,7 @@ dependencies { management platform(project(":spring-statemachine-platform")) implementation project(':spring-statemachine-samples-common') implementation project(':spring-statemachine-core') - implementation 'org.springframework.shell:spring-shell-core' + implementation 'org.springframework.shell:spring-shell-starter' testImplementation(testFixtures(project(':spring-statemachine-core'))) testImplementation (project(':spring-statemachine-test')) testImplementation 'org.hamcrest:hamcrest-core' diff --git a/spring-statemachine-samples/showcase/src/main/java/demo/showcase/Application.java b/spring-statemachine-samples/showcase/src/main/java/demo/showcase/Application.java index 0c4294be0..b1d8fcd43 100644 --- a/spring-statemachine-samples/showcase/src/main/java/demo/showcase/Application.java +++ b/spring-statemachine-samples/showcase/src/main/java/demo/showcase/Application.java @@ -20,8 +20,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.shell.command.annotation.CommandScan; import org.springframework.statemachine.StateContext; import org.springframework.statemachine.action.Action; import org.springframework.statemachine.config.EnableStateMachine; @@ -30,7 +32,8 @@ import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; import org.springframework.statemachine.guard.Guard; -@Configuration +@CommandScan +@SpringBootApplication(scanBasePackages = "demo") public class Application { private final static Log log = LogFactory.getLog(Application.class); diff --git a/spring-statemachine-samples/showcase/src/main/java/demo/showcase/StateMachineCommands.java b/spring-statemachine-samples/showcase/src/main/java/demo/showcase/StateMachineCommands.java index 4d2faf8b8..9b5761ed3 100644 --- a/spring-statemachine-samples/showcase/src/main/java/demo/showcase/StateMachineCommands.java +++ b/spring-statemachine-samples/showcase/src/main/java/demo/showcase/StateMachineCommands.java @@ -18,14 +18,13 @@ import org.springframework.messaging.support.MessageBuilder; import org.springframework.shell.command.annotation.Command; import org.springframework.shell.command.annotation.Option; -import org.springframework.stereotype.Component; import demo.AbstractStateMachineCommands; import demo.showcase.Application.Events; import demo.showcase.Application.States; import reactor.core.publisher.Mono; -@Component +@Command public class StateMachineCommands extends AbstractStateMachineCommands { @Command(command = "sm event", description = "Sends an event to a state machine") diff --git a/spring-statemachine-samples/showcase/src/main/resources/META-INF/spring/spring-shell-plugin.xml b/spring-statemachine-samples/showcase/src/main/resources/META-INF/spring/spring-shell-plugin.xml deleted file mode 100644 index 1112bb354..000000000 --- a/spring-statemachine-samples/showcase/src/main/resources/META-INF/spring/spring-shell-plugin.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/spring-statemachine-samples/showcase/src/main/resources/application.properties b/spring-statemachine-samples/showcase/src/main/resources/application.properties new file mode 100644 index 000000000..810a40c47 --- /dev/null +++ b/spring-statemachine-samples/showcase/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.shell.interactive.enabled=true diff --git a/spring-statemachine-samples/spring-statemachine-samples.gradle b/spring-statemachine-samples/spring-statemachine-samples.gradle index 9de1009bc..d955870e6 100644 --- a/spring-statemachine-samples/spring-statemachine-samples.gradle +++ b/spring-statemachine-samples/spring-statemachine-samples.gradle @@ -10,3 +10,7 @@ dependencies { implementation 'org.springframework.shell:spring-shell-core' implementation 'org.springframework.boot:spring-boot-starter' } + +tasks.named("bootJar") { + enabled = false +} diff --git a/spring-statemachine-samples/turnstile/spring-statemachine-samples-turnstile.gradle b/spring-statemachine-samples/turnstile/spring-statemachine-samples-turnstile.gradle index 8d8bfb435..5c1c1d380 100644 --- a/spring-statemachine-samples/turnstile/spring-statemachine-samples-turnstile.gradle +++ b/spring-statemachine-samples/turnstile/spring-statemachine-samples-turnstile.gradle @@ -8,7 +8,7 @@ dependencies { management platform(project(":spring-statemachine-platform")) implementation project(':spring-statemachine-samples-common') implementation project(':spring-statemachine-core') - implementation 'org.springframework.shell:spring-shell-core' + implementation 'org.springframework.shell:spring-shell-starter' testImplementation(testFixtures(project(':spring-statemachine-core'))) testImplementation (project(':spring-statemachine-test')) testImplementation 'org.hamcrest:hamcrest-core' diff --git a/spring-statemachine-samples/turnstile/src/main/java/demo/turnstile/Application.java b/spring-statemachine-samples/turnstile/src/main/java/demo/turnstile/Application.java index cfa2e4a67..3cc20e235 100644 --- a/spring-statemachine-samples/turnstile/src/main/java/demo/turnstile/Application.java +++ b/spring-statemachine-samples/turnstile/src/main/java/demo/turnstile/Application.java @@ -18,13 +18,16 @@ import java.util.EnumSet; import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Configuration; +import org.springframework.shell.command.annotation.CommandScan; import org.springframework.statemachine.config.EnableStateMachine; import org.springframework.statemachine.config.EnumStateMachineConfigurerAdapter; import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; -@Configuration +@CommandScan +@SpringBootApplication(scanBasePackages = "demo") public class Application { //tag::snippetA[] diff --git a/spring-statemachine-samples/turnstile/src/main/resources/META-INF/spring/spring-shell-plugin.xml b/spring-statemachine-samples/turnstile/src/main/resources/META-INF/spring/spring-shell-plugin.xml deleted file mode 100644 index 1112bb354..000000000 --- a/spring-statemachine-samples/turnstile/src/main/resources/META-INF/spring/spring-shell-plugin.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/spring-statemachine-samples/turnstile/src/main/resources/application.properties b/spring-statemachine-samples/turnstile/src/main/resources/application.properties new file mode 100644 index 000000000..810a40c47 --- /dev/null +++ b/spring-statemachine-samples/turnstile/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.shell.interactive.enabled=true diff --git a/spring-statemachine-samples/turnstile/src/test/java/demo/turnstile/TurnstileTests.java b/spring-statemachine-samples/turnstile/src/test/java/demo/turnstile/TurnstileTests.java index c64910298..e3976f308 100644 --- a/spring-statemachine-samples/turnstile/src/test/java/demo/turnstile/TurnstileTests.java +++ b/spring-statemachine-samples/turnstile/src/test/java/demo/turnstile/TurnstileTests.java @@ -137,7 +137,7 @@ public void reset(int c1, int c2, int c3, int c4) { @BeforeEach public void setup() { context = new AnnotationConfigApplicationContext(); - context.register(CommonConfiguration.class, Application.class, Config.class, StateMachineCommands.class); + context.register(CommonConfiguration.class, Application.class, Config.class); context.refresh(); machine = context.getBean(StateMachineSystemConstants.DEFAULT_ID_STATEMACHINE, ObjectStateMachine.class); listener = context.getBean(TestListener.class);