2013-06-06 5 views
0

Я был ответственным за последние 5 лет разработки и обслуживания проекта GWT, который состоит из 6 различных WebApps. Проект использует GWT 1.5 и построен с помощью ant (для обоих режимов dev/war). Эти веб-приложения развернуты на apache-tomcat, производственный сайт запускает версию 5.5, тогда как мы запускаем (для тестирования) версию 7.0.Перенос существующего проекта GWT на новую версию GWT

Чтобы подчеркнуть пользовательский интерфейс, я хотел бы перенести версию GWT на более новую (о которой я пока не знаю); Я много читал о миграции, об устаревших API, улучшениях, сделанных из одной версии в другую, и у меня все еще есть структурные вопросы, касающиеся самой новой компоновки проекта.

В настоящее время, раскладка следующая:

WebXXX 
-src 
-net.yyy.webxxx 
    -common 
    -client 
    -server 
    -public 
    -Common.gwt.xml 
    -module1 
    -client 
    -server 
    -public 
    -module1.gwt.xml 
    -[...] 
-test 
-build 
-build.xml 
-buildModule1.xml 
-[..] 
-Dependencies(SVN_Externals) 
-www 
-compile-all-modules.xml 
-compile-module1.xml 
-WebXXXHosted.xml 
-[..] 

Для явных вещей немного, то fodler зависимости место держатель для соединения источников рабочей области с помощью внешней библиотеки виджетов. Эта библиотека построена во время компиляции (при создании всех модулей или только одного в муравьиной задаче), и полученный jar вводится в каталог WEB-INF/lib модуля. Эта библиотека виджета использует gxt.1.1.1 и gwt-инкубатор 1.5.

На протяжении многих лет написать новую задачу муравья для каждого нового WebApp, казалось, было решением, но теперь, когда мы также используем maven, мне интересно, должен ли я преобразовать проект в проект maven перед выполнением миграции или если На данный момент я могу пропустить преобразование maven.

Поскольку я предполагаю, что maven не является абсолютно необходимым, и поскольку проект включает в себя несколько индивидуальных задач муравьев, чтобы запустить его (в режиме dev), мне также интересно, могу ли я (вместо этого) перенести связанные банки GWT в версию, которая таков, что мне не придется переписывать весь пользовательский интерфейс, хотя я знаю, что у меня будет серьезная замена, чтобы выполнить и провести обширные тесты для запуска.

Не стесняйтесь просвещать меня о том, как я мог бы пойти (maven или нет, версия gwt, на которую я должен перейти, связанная версия gxt (если она по-прежнему актуальна)), потому что я в полной темноте!

Спасибо за все, Cheers!

ответ

1

Идите один шаг за раз.

  • Всегда использовать последнюю версию (и перенести как можно скорее, когда выходит новая версия). При этом сообщалось о 2.5 и 2.5.1, имеющих несколько регрессий в GWT-RPC, поэтому, если это не сработает, попробуйте использовать 2.4 (но сначала попробуйте 2.5.1!)
  • Вы будете (я не знаю, как они справляются с обратной совместимостью в Sencha и насколько это сломает ваш код - или нет), и снова пытайтесь оставаться в курсе последних событий)
  • gwt- инкубатор устарел долго, поэтому будьте готовы заменить некоторые из виджетов, и в конечном итоге вы захотите полностью удалить эту зависимость.

  • не перемещаются в Maven до тех пор, пока вы не обновите GWT, если обновление не слишком сильно перерывает ваши задачи Ant (затем попробуйте перейти на Maven, а затем обновить GWT, но 1.5 - действительно старая версия, поэтому я понятия не имею, насколько хорошо он работает с Maven).

Re. Maven, GWT в скором времени будет использовать Maven и предоставит официальный плагин.Альфа-версии этого плагина можно найти по адресу https://github.com/tbroyer/gwt-maven-plugin (на данный момент я получил положительную обратную связь); или вы можете использовать gwt-maven-plugin из CodeHaus или просто вызвать GWT-компилятор с помощью exec-maven-plugin (или antrun-maven-plugin). Что касается макета проекта, см. http://blog.ltgt.net/announcing-gwt-maven-archetypes-project, это макет официальный Плагин GWT будет основан на (и опять же, в основном положительной обратной связи до сих пор).

+0

GXT 1.1 относительно древний - я думаю, что GXT 2 был выпущен незадолго до GWT 1.6, и хотя у него был довольно небольшой набор изменений по сравнению с GXT 1, версия 3 внесла существенные изменения. Тем не менее, основные проблемы обратной совместимости будут связаны с переходом интерфейса класса JClassType в GWT 2.2, для чего может потребоваться перекомпилировать несколько классов в jxt 1.1. –

0

Если вы планируете выполнить миграцию в gwt и maven, мне бы пришлось сначала перенести существующий проект на maven. Вы должны быть уверены, что все зависимости находятся в репозиториях maven или вы знаете, как обращаться с локальными репозиториями. После того, как у вас есть все mavenized в модулях, и вы можете импортировать проекты в eclipse (возможно, вам нужен старый gwt-плагин) и запустить все задачи, которые я бы попытался перенести модуль, выбрав модуль, соответствующий соответствующим зависимостям.

Я думаю, что обновление зависимостей с maven довольно просто, чем обращение с муравьем, но, конечно, вы можете выбрать другой способ, если вы чувствуете себя более conifrtable.

В любом случае, задача переноса приложения gwt с 1.5 до 2.5.1 может быть трудной задачей. Сначала вы должны знать, как эволюция gwt может быть связана с тем, какие проблемы могут возникнуть в вашем приложении (новые интерфейсы виджетов, обработчики и т. Д.).

Вы в зависимости от gwt-инкубатора, который был прекращен несколько лет назад, возможно, у вас есть сборка, которая может работать с gwt-2.5.1, но, вероятно, есть много вещей, которые больше не работают. Есть некоторые функции, которые были перенесены из инкубатора в gwt, такие как списки ячеек, сборщик дат и т. Д., Поэтому вам нужно переписать свой код, используя новый материал в gwt.

Ваш проект зависит от старой версии gxt, они внесли много изменений в свою api, и я думаю, что вам придется иметь дело с большим количеством изменений в вашем коде.

Таким образом, mavenizing ant project не так сложно, и у вас много информации в Интернете, но перенос gwt-приложения с 1.5 до 2.5.1 - это не тривиальная задача, если у вас нет хорошего набора тесты могут быть сложнее, поэтому будьте готовы потратить много времени на то, как заменить старые вещи и исправить проблемы.

Смежные вопросы