早些时候,我曾在博客中介绍过将Scala与Spring Boot结合使用以及该组合如何工作。 但是,以前的方法存在一个问题–运行早期配置的唯一方法是将项目构建到jar文件中并运行jar文件。
./gradlew build
java -jar build/libs/spring-boot-scala-web-0.1.0.jar
Spring boot带有一个基于gradle的插件,该插件应该允许该项目使用“ gradle bootRun”命令运行,不幸的是,这给基于scala的项目带来了错误。
一个好的解决方法是使用sbt来构建和运行基于Spring-boot的项目。 不过要注意的是,对于gradle和maven,依赖项的版本将通过父pom进行管理,现在必须明确指定这些版本。 这是一个示例sbt构建文件,其中阐明了依赖性:
name := "spring-boot-scala-web"
version := "1.0"
scalaVersion := "2.10.4"
sbtVersion := "0.13.1"
seq(webSettings : _*)
libraryDependencies ++= Seq(
"org.springframework.boot" % "spring-boot-starter-web" % "1.0.2.RELEASE",
"org.springframework.boot" % "spring-boot-starter-data-jpa" % "1.0.2.RELEASE",
"org.webjars" % "bootstrap" % "3.1.1",
"org.webjars" % "jquery" % "2.1.0-2",
"org.thymeleaf" % "thymeleaf-spring4" % "2.1.2.RELEASE",
"org.hibernate" % "hibernate-validator" % "5.0.2.Final",
"nz.net.ultraq.thymeleaf" % "thymeleaf-layout-dialect" % "1.2.1",
"org.hsqldb" % "hsqldb" % "2.3.1",
"org.springframework.boot" % "spring-boot-starter-tomcat" % "1.0.2.RELEASE" % "provided",
"javax.servlet" % "javax.servlet-api" % "3.0.1" % "provided"
)
libraryDependencies ++= Seq(
"org.apache.tomcat.embed" % "tomcat-embed-core" % "7.0.53" % "container",
"org.apache.tomcat.embed" % "tomcat-embed-logging-juli" % "7.0.53" % "container",
"org.apache.tomcat.embed" % "tomcat-embed-jasper" % "7.0.53" % "container"
)
在这里,我还使用xsbt-web-plugin ,它是用于构建scala Web应用程序的插件。
xsbt-web-plugin还附带命令来启动基于tomcat或码头的容器并在这些容器中运行应用程序,但是我很难使它们工作。
起作用的是runMain命令,通过sbt启动Spring-boot主程序:
runMain mvctest.SampleWebApplication
xsbt-web-plugin允许使用“ package”命令将项目打包为war文件,该war部署并运行在独立的tomcat容器中,没有任何问题。
这是具有以下更改的github项目:https://github.com/bijukunjummen/spring-boot-scala-web.git
翻译自: https://www.javacodegeeks.com/2014/04/spring-boot-and-scala-with-sbt-as-the-build-tool.html