Вводная часть
Хочу описать шаги, проделываемые мной, для того, что бы заставить работать GWT в SpringSource dm Server версии 2.0.0.M3 (далее dmServer). Мои попытки базируются на серии статей отсюда http://blog.springsource.com/2008/11/07/deploying-gwt-applications-in-springsource-dm-server-part-1/. Также хотелось бы интегрировать Maven в сборку проекта.
Мы будем использовать:
- dmServer 2.0.0.M3;
- SpringFrameWork 3.0.0.M3;
- GWT 1.7
Итак начнем…
Step 1: создаем новый GWT проект
Добавляем в PATH путь к распакованному дистрибутиву с GWT
set PATH=%PATH%;D:\projects\gwt\gwt-dist
и выполняем комманду для создания проекта
webAppCreator -out stock-watcher name.webdizz.gwt.stock.watcher.StockWatcher
Note: прежняя схема создания GWT проектов для Eclipse с помошью комманд projectCreator and applicationCreator устарела.

Создаем GWT проект
После создания проекта его необходимо импортировать в Eclipse.
“Import” -> “General” -> “Existing Projects into Workspace”
Step 2: запускаем на проверку
Генератор GWT проекта автоматически создал файл StockWatcher.launch, в котором хранятся настройки запуска проекта в Hosted Mode. Для запуска проекта выберите проект далее в контекстном менню
“Run AS”->”Run Configurations…”->”Java Application”->”StockWatcher”->”Run”
После запуска проекта, если обновить состояние проекта, то можно увидеть в директории war/stockwatcher файлы, созданные компилятором. Стоит так же отметить все, что находиться в директории war является стандартным распакованным “варником”, который может быть запущен в сервлет контейнере (Tomcat, Jetty), но не в нашем случае.
Step 3: предварительная настройка структуры проекта в соответствии с подходом в Maven
Создаем структуру следующего вида

Структура GWT проекта для Maven
Запускаем комманду генерации нового ланчера “StockWatcher Maven support”
“Run AS”->”Run Configurations…”->”Java Application”->”StockWatcher”->нажимаем на кнопку “Duplicates the currently selected launch configuration”->в поле “Name” вставляем “StockWatcher Maven support”
В табе “Arguments” изменяем путь к директурии, куда GWT компилятор будет складывать результаты своей деятельности, добавив параметр “-war src/main/webapp“. (С версии 1.6 GWT не поддерживает параметр -out [1])
Далее меняем “Classpath”, изменив в этом табе значение “User Entries->src-\StockWatcher\” на “User Entries->java-\StockWatcher\src\main”

Измененный Classpath для ланчера
Запускаем и смотрим все ли изменения прошли удачно)
Step 4: создаем инстанс dmServer
Предполагается, что у вас имеется предустанновленный dmServer. Открываем “View” “Servers”, в контекстном менню выбираем “New”->”Server”->”SpringSource”->”SpringSource dm Server v2.0″->”Next”->указываем путь к серверу->”Finish”

dmServer instance configuration
Step 5: изменения настройки сборки проекта с помощью Ant
Открываем файл build.xml и правим для того, чтобы Ant мог собрать проект после изменения путей
- заменяем все строки “war/WEB-INF” на “src/main/webapp/WEB-INF”;
- “war/stockwatcher” на “src/main/webapp/stockwatcher”;
- в target javac нужно присвоить аттрибуту srcdir новое значение “src/main/java”;
- далее в таске copy/fileset значение аттрибута dir заменяем на “src/main/java”;
- в target gwtc и hosted значение pathelement аттрибута location так же заменяем на “src/main/java”;
- также нужно добавить параметр дял запуска com.google.gwt.dev.Compiler. Добавляем следующую строчку в таску запуска компилятора
<arg line=”-war src/main/webapp”/>
- в таске war нужно изменить путь для сборки war-ник – аттрибут basedir должен иметь значение “src/main/webapp” ;
Тут приложен измененный файл.
Step 6: запуск проекта на dmServer
Теперь мы можем проверить запуск проекта в dmServer-е как стандартный war для этого нужно запустить Ant
ant war
Скопировать собранный war-ник StockWatcher.war в директории проекта в dmServer в директорию pickup и запустить серевер.
После запуска должно появиться сообщения, среди которых можно найти следующее

Startup result logs
А открыв URL http://localhost:8080/StockWatcher должно быть

WebApplication run result
What next:
На этом пожалуй все, в следующем посте мы продолжим….
Useful Links
[1]http://code.google.com/p/google-web-toolkit/wiki/WAR_Design_1_6