Структура проекта GWT - PullRequest
0 голосов
/ 17 мая 2011

Прямо сейчас в нашем проекте мы имеем нижеприведенную структуру. Наш проект в основном использует GWT & Spring Framework.

  1. com.customername.projectname.client.module name
  2. com.customername.projectname.client.rpc.module name
  3. com.customername.projectname.shared.validator.module name
  4. com.customername.projectname.server.module имя
  5. com.customername.projectname.spring.dao.module name
  6. com.customername.projectname.spring.service.module name

Наш application.gwt.xml содержит нижеприведенную запись для источника, который должен быть включен в скрипт Java.

source path='client'
source path='shared'

Поскольку мы используем spring на стороне сервера, мы используем аннотацию spring для пометки служб и DAO, а затем в applicationContext.xml мы используем приведенную ниже конфигурацию для сканирования DAO и Service Layer.

<context:annotation-config/>    
<context:component-scan base-package>

Теперь наш клиент хочет перейти с нижеуказанной структуры. Группировка всего по модулю. Также в нашем случае модуль не является модулем GWT. Это как различие. части приложения.

  1. com.customername.projectname.modulename.client
  2. com.customername.projectname.modulename.rpc
  3. com.customername.projectname.Modulename.validator
  4. com.customername.projectname.Modulename.server
  5. com.customername.projectname.Modulename.spring.dao
  6. com.customername.projectname.Modulename.spring.Service

Мой вопрос:

  1. Рекомендуется ли верхний подход, учитывая, что это очень большое приложение?
  2. Если вышеупомянутый подход должен быть реализован, как выполнить настройку пакетов / исходных файлов, которые должны быть преобразованы компилятором gwt из java в java-скрипт. Стоит ли упоминать каждое имя модуля в application.gwt.xml?

Ответы [ 3 ]

0 голосов
/ 17 мая 2011

Вопрос 1) Если это имеет смысл для вас и других разработчиков, это звучит как довольно приличная структура проекта.(Взято из Здесь )

Вы должны объединить эти классы и интерфейс в пакет по нескольким причинам, включая следующие:

  • Вы идругие программисты могут легко определить, связаны ли эти типы.
  • Вы и другие программисты знают, где найти типы, которые могут предоставлять функции, связанные с графикой.
  • Имена ваших типов не будут конфликтовать симена типов в других пакетах, поскольку пакет создает новое пространство имен.
  • Вы можете разрешить типам в пакете иметь неограниченный доступ друг к другу, но при этом ограничить доступ для типов вне пакета.

Вопрос 2) Позвольте мне уточнить в отношении:

Стоит ли упоминать каждое имя модуля в application.gwt.xml?

вамзначит, пакеты правильно?

...

    <entry-point class='com.customername.projectname.AppEntryPoint'/>

    <source path="modulename.client"/>
    <source path="modulename.anotherpackage"/>

</module>

Любой пакет (начиная с пакета, в котором находится .gwt.xml) в модуле GWT, должен указываться в .gwt.xml, если он должен быть скомпилированd Компилятором GWT все подпакеты упомянутых пакетов будут автоматически скомпилированы компилятором GWT.

Не уверен, что ваш вопрос относительно конфигурации Spring.

Надеюсь, чтоПомогает.

0 голосов
/ 18 мая 2011

Вопрос 1) Я согласен с edwardTheGreat, ваша первоначальная структура пакета звучит вполне разумно.Вам нужно будет только перечислить клиентские и общие пакеты (те, которые необходимо скомпилировать в javascript) в файле gwt.xml.

Вопрос 2) Если вы измените структуру пакета, как вы упомянуливам нужно будет перечислить клиента и общие каталоги каждого модуля в файле gwt.xml.Как сказал Дэниел, вы можете разбить каждый модуль на его собственный «модуль GWT», а затем наследовать модули GWT, которые вам нужны в каждом модуле приложения.

Чтобы достичь этого, вам необходимо сделать доступным исходный модуль для каждого унаследованного модуля GWT.Делаете ли вы это через Maven, Ant и т. Д., Не имеет значения.Но модуль GWT верхнего уровня должен иметь доступ во время компиляции к источнику для всех унаследованных модулей GWT.Например:

<module rename-to='A'>
  <inherits name='org.example.B' />
  ... other inherits, entry-point, etc. ...
  <source path='client' />
  <source path='shared' />
</module>

При такой структуре модуль «А» должен иметь доступ к источнику модуля «В».Модуль 'B' может быть собран, как обычно, как модуль GWT, но тогда, во время компиляции, модуль 'A' должен иметь источник B. на пути к классам.

0 голосов
/ 17 мая 2011

Чтобы ответить на второй вопрос, у вас должен быть один файл .gwt.xml для каждого модуля с указанием клиентских (и общих) каталогов в этом модуле.Для модулей GWT, которые используют другие модули GWT, вы должны использовать «наследовать» в файле .gwt.xml, чтобы ссылаться на них.

Эта страница довольно хорошо описывает некоторые из этих понятий: http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html

...