Внимание! В данной статье содержится зашкаливающее количество волшебства, а также отсутствует логика и здравый смысл. По окончанию прочтения данной статьи вам будет присвоен титул Великого Шамана. Добро пожаловать под кат, юный хобитс…
Для начала создадим проект Spring Boot + Vaadin. Для этого воспользуемся сервисом start.spring.io:
Выбираем Vaadin, настраиваем поля и нажимаем на кнопку Generate Project. Импортируем проект в IDEA. Проект должен выглядеть вот таким образом:
Заходим в pom.xml файл и видим следующее:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
<!--?xml version="1.0" encoding="UTF-8"?--> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion></project> <groupid>org.test</groupid> <artifactid>demo</artifactid> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>demo</name> <description>Demo project for Spring Boot</description> <parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>1.2.5.RELEASE</version> <relativepath> <!-- lookup parent from repository --> </relativepath></parent> <properties> <project.build.sourceencoding>UTF-8</project.build.sourceencoding> <java.version>1.8</java.version> </properties><dependencies> <dependency> <groupid>com.vaadin</groupid> <artifactid>vaadin-spring-boot-starter</artifactid> <version>1.0.0.beta3</version> </dependency></dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> <dependencymanagement> <dependencies> <dependency> <groupid>com.vaadin</groupid> <artifactid>vaadin-bom</artifactid> <version>7.4.5</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencymanagement> <build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> </plugin> </plugins> </build> |
Нахрен сносим вот это:
1 2 3 4 5 |
<dependency> <groupid>com.vaadin</groupid> <artifactid>vaadin-spring-boot-starter</artifactid> <version>1.0.0.beta3</version> </dependency> |
Вместо этого вставляем другие зависимости на это же место:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<dependency> <groupid>org.vaadin.spring</groupid> <artifactid>spring-boot-vaadin</artifactid> <version>0.0.5.RELEASE</version> </dependency> <dependency> <groupid>com.vaadin</groupid> <artifactid>vaadin-client-compiled</artifactid> <version>7.5.1</version> </dependency> <dependency> <groupid>com.vaadin</groupid> <artifactid>vaadin-themes</artifactid> <version>7.5.1</version> </dependency> |
Давайте добавим еще vaadin-charts для тестирования компилирования WidgetSet:
1 2 3 4 5 |
<dependency> <groupid>com.vaadin.addon</groupid> <artifactid>vaadin-charts</artifactid> <version>3.0.0-alpha2</version> </dependency> |
Добавим щепотку репозиториев:
1 2 3 4 5 6 |
<repositories> <repository> <id>vaadin-addons</id> <url>http://maven.vaadin.com/vaadin-addons</url> </repository> </repositories> |
Далее, добавим vaadin maven plugin:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
<plugin> <groupid>com.vaadin</groupid> <artifactid>vaadin-maven-plugin</artifactid> <version>7.4.5</version> <configuration> <extrajvmargs>-Xmx512M -Xss1024k</extrajvmargs> <!-- <runTarget>mobilemail</runTarget> --> <!-- We are doing "inplace" but into subdir VAADIN/widgetsets. This way compatible with Vaadin eclipse plugin. --> <webappdirectory>${basedir}/src/main/webapp/VAADIN/widgetsets </webappdirectory> <hostedwebapp>${basedir}/src/main/webapp/VAADIN/widgetsets </hostedwebapp> <noserver>true</noserver> <!-- Remove draftCompile when project is ready --> <draftcompile>false</draftcompile> <compilereport>true</compilereport></configuration></plugin> <style>OBF</style> <strict>true</strict> <runtarget>http://localhost:8080/</runtarget> <executions> <execution> <configuration> <!-- if you don't specify any modules, the plugin will find them --> <!-- <modules> <module>com.vaadin.demo.mobilemail.gwt.ColorPickerWidgetSet</module> </modules> --> </configuration> <goals> <goal>clean</goal> <goal>resources</goal> <goal>update-theme</goal> <goal>update-widgetset</goal> <goal>compile-theme</goal> <goal>compile</goal> </goals> </execution> </executions> |
Теперь обновляем наш проект, нажав на специальную кнопку:
Вот список зависимостей, который должен быть у вас:
Далее, создадим папки в ресурсах: springvaadin.widgetset и создадим в нем файл WidgetSet.gwt.xml:
1 2 3 4 5 6 7 8 9 |
<!--?xml version="1.0" encoding="UTF-8"?--> <module></module> <inherits name="com.vaadin.DefaultWidgetSet"></inherits> <inherits name="com.vaadin.addon.charts.Widgetset"></inherits> <inherits name="com.vaadin.addon.timeline.gwt.TimelineWidgetSet"> |
Заметили что-то красное? Плевать! Идем дальше.
Находим в ресурсах файл application.properties и пишем туда следующее:
1 |
vaadin.servlet.params.widgetset=springvaadin.widgetset.WidgetSet |
Всё! Конфигурирование закончено. Запускаем maven install (Внимание! maven install это не тоже самое, что и maven install:install):
Через несколько минут скомпилируется WidgetSet и появятся client-side файлы в папке webapp/VAADIN/widgetsets.
Создаем тестовую страничку:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
package demo; import com.vaadin.addon.charts.Chart; import com.vaadin.server.VaadinRequest; import com.vaadin.ui.UI; import org.vaadin.spring.annotation.VaadinUI; @VaadinUI public class SimpleUI extends UI { @Override protected void init(VaadinRequest vaadinRequest) { setContent(new Chart()); } } |
Запускаем Spring Boot запускатор и радуемся пустому графику:
Получилось так же? Супер, цель достигнута. Нет? Сносим всё к чертям и делаем заново.