祝贺弹簧状态机,昨天我发现它并且一直在尝试,特别是在STS中运行的旋转门示例。我发现构建FSM非常简单直观。
因为Spring shell在STS中不能很好地工作,所以我跟踪了从参考文档中的命令行运行示例的说明,
" java -jar 弹簧的statemachine样本-旋转门-1.0.0.BUILD-SNAPSHOT.jar"
, 但运行它有错误
"没有主要的清单属性,在spring-statemachine-samples-turnstile-1.0.0.BUILD-SNAPSHOT.jar"。
虽然甚至不是使用gradle的新手,但我尝试通过在jar部分中将此行添加到build.gradle来修复此问题
" manifest.attributes [' Main-Class'] =' demo.turnstile.Application'" (它没有处理我所知的各种子项目)但是遇到了这个错误 " NoClassDefFoundError:org / springframework / shell / Bootstrap"。
如果可以从gradle运行样本,您可以将它们包含在参考文档中吗?我尝试使用
运行示例gradle run 但它没有与shell脚本的交互。
答案 0 :(得分:1)
示例设计为可执行jar和shell运行,这样您就可以进行交互,而无需每次更改都需要重新编译。您的错误表明您没有按照文档中的说明构建该示例jar。
./gradlew clean build -x test
这将自动使用spring boot插件,它将为jar元信息添加必要的jar清单标头,使其成为真正的可执行jar。基本上每个样本都是一个春季启动应用程序。
答案 1 :(得分:0)
在 Windows环境中构建SM sample个项目:
打开命令提示符(windows key + r -->cmd-->Enter)
,将目录更改为项目根文件夹spring-statemachine-master
(在提取的文件夹内)。
运行gradlew install
以将所有spring依赖项复制到本地计算机。
gradlew clean build -x test
以构建弹簧外壳罐。礼貌Janne 理想情况下,这些步骤应该构建所有.jar
,查看jar文件的相应示例项目的\build\libs
文件夹。
运行任何其他java jar文件java -jar [jar-file-name.jar]
(确保将目录更改为jar文件目录位置)。
我被困的另一件事是,如何向SM发送事件:
这就是sm event EVENT_NAME_AS_DEFINED_IN_CLASS
。 Ref
例如:sm event RINSE
- >到washer
项目