Установка add-on'a для Maven проекта с Vaadin может быть достаточно запутанным.
Допустим нам захотелось использовать в своем проекте адоны сторонних разработчиков, которые любезно предоставили их на специально отведенной для этого площадке
directory. Для примера, попробуем установить FastLayouts (by Matti Tahvonen), каковые должны работать быстрее чем обыкновенные Vaadin UI Layouts.
И так создадим новый Maven проект с поддержкой Vaadin
в поле фильтр можно указать vaadin и выбрать vaadin-clean.
В результате получим проект в котором нужно будет произвести несколько изменений, в частности указать в Project Facets -> Vaadin Eclipse Integration
Dynamic Web Module так же придется выбрать.
Далее преобразования будут касаться pom.xml фаила в корне проекта. На
странице адона для него можно будет скопировать элементы dependency и repository
Эти элементы следует скопировать в pom.xml а так же раскомментировать код, который следует за
для компиляции widget-ов, чем и является add-on.
Раскомментируйте так же следующий код
com.google.gwt
gwt-user
2.1.1
provided
Следующий этап: создать простой GWT module descriptor, для этого добавляем в исходники проекта xml фаил MyAppWidgetSet.gwt.xml с таким содержимым
Теперь проект готов к компиляции Vaadin виджетов. Для этой цели в Eclipse c установленным плагинов Vaadin integration есть кнопка Compile Vaadin Widgets
Эта кнопка должна запустить процесс компиляции и при удачном раскладе в консоле Eclipse мы наблюдаем output этого процесса
В результате в проекте, в папке WebContent, должна образоваться папка VAADIN
Vaadin полагает, что web app непременно должна находится в WebContent, честно говоря, пока не знаю как заставить Vaadin думать, что компилировать надо в другую папку. Самый тупой метод просто скопировать скомпилированный виджет (в данном случае всю папку VAADIN) в /src/main/webapp.
Далее укажем следующие параметры в web.xml между тегами
widgetsetcom.b.a.MyAppWidgetSet
для того, чтобы приложение использовало данный виджет.
Изменим исходный код приложения с иcпользованием FastGrid, создаем новый FastGrid размером 2x2, помещаем туда элементы Label с текстом индекса ячейки и добавляем FastGrid на Layout окна.
package com.b.a;
import com.vaadin.Application;
import com.vaadin.incubator.fastlayouts.FastGrid;
import com.vaadin.ui.Label;
import com.vaadin.ui.Window;
/**
* The Application's "main" class
*/
@SuppressWarnings("serial")
public class MyVaadinApplication extends Application
{
private Window window;
@Override
public void init()
{
window = new Window("My Vaadin Application");
setMainWindow(window);
final FastGrid fg = new FastGrid(2,2);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
fg.addComponent(new Label(i + ":" + j),i,j);
}
}
window.addComponent(fg);
}
}
Если после запуска приложения на странице появляется сообщение
значит виджет не скомпилировался, следует проверить все этапы этого сложного процесса.
Полезными могут оказаться следующие ссылки