Ранее я писал об использовании Scala с Spring Boot и о том, как работает комбинация. Однако с предыдущим подходом была одна проблема — единственный способ запустить более раннюю конфигурацию состоял в том, чтобы собрать проект в файл JAR и запустить файл JAR.
1
2
|
./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 с прописанными зависимостями:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
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.
xsbt-web-plugin также поставляется с командами для запуска контейнеров на основе tomcat или jetty и запуска приложений в этих контейнерах, однако у меня возникли трудности с тем, чтобы заставить их работать.
Работала команда runMain для запуска основной программы Spring-boot через sbt:
1
|
runMain mvctest.SampleWebApplication |
и xsbt-web-plugin позволяет упаковать проект в файл war с помощью команды «package», эта война развертывается и запускается без каких-либо проблем в автономном контейнере Tomcat.
Вот проект GitHub с этими изменениями: https://github.com/bijukunjummen/spring-boot-scala-web.git
Ссылка: | Spring Boot и Scala с sbt в качестве инструмента для сборки от нашего партнера по JCG Биджу Кунджуммен в блоге all and sundry. |