Как включить внешние классы в развертывание GAE? - PullRequest
1 голос
/ 05 мая 2010

Я использую плагин Google для Eclipse, и у меня возникла следующая проблема:

Проект (A) состоит из графического интерфейса пользователя на основе GWT, который общается с сервером, работающим в GAE и использующим JPA. Кроме того, существует проект (B) для переноса устаревших данных в новое хранилище данных. Поскольку оба эти проекта используют общую модель данных, я выделил набор интерфейсов и перечислений в отдельный проект (C) и установил зависимости двух других проектов от него.

Кажется, что проект Java App (B) работает, но проект GWT / GAE (A) работает, только если я вручную копирую классы в каталог WEB-INF / classes. Очевидно, это работает только при использовании режима housted.

Кто-нибудь знает, как настроить многопроектную настройку в Eclipse?

Кроме того, я не уверен, является ли мультипроектный макет лучшим решением. Набор общих объектов модели используется во всех трех областях:

  • пользовательский клиент (проект GWT компилирует стандартные папки клиента и разделяет)
  • серверная часть (предоставление услуг для GWT-RPC, загрузка и различные каналы)
  • приложение для миграции (размещение устаревших данных в сервлете загрузки)

Каковы архитектурные опции, чтобы сохранить количество дублирующихся классов на минимуме?

1 Ответ

0 голосов
/ 11 мая 2010

Чтобы ваш проект GAE работал с другим Java-проектом, сначала вы должны добавить второй к первому пути сборки. Это решает только одну часть проблемы, позволяя вам ссылаться на классы, которые вам нужны в разработке.

Другая проблема заключается в том, что после запуска проекта GAE в режиме разработки он не сможет найти классы другого проекта. Что вам нужно сделать, это экспортировать проект в виде jar (имя не имеет значения, классы могут быть скомпилированы или нет), и поместить их в папку WEB-INF / lib. Вам не нужно добавлять jar к пути сборки, вы можете продолжать использовать ссылку на проект, но помните, что каждый раз, когда вы вносите изменения в другой проект, вам нужно экспортировать его и заменить jar новым. Я не нашел лучшего способа сделать это, но, по крайней мере, если вы используете эту папку вместо WEB-INF / classes, она не будет удалена GAE.

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

...