GWT - включая исходные файлы вне иерархии пакетов модуля - PullRequest
4 голосов
/ 29 апреля 2011

У меня есть проект GWT в затмении со следующей структурой для модуля GWT

com.foo.gwt -> Dashboard.gwt.xml
com.foo.gwt.client
com.foo.gwt.server

У меня есть разные пакеты com.bar.baz1, com.bar.baz2 и т. Д., Содержимое которых я хочу включить в код на стороне клиента. Все файлы совместимы с GWT JAVA-> JS.

Проблема в том, что тег

в Dashboard.gwt.xml обрабатывает путь относительно каталога Dashboard.gwt.xml. Поэтому я не могу ссылаться на что-либо вне com.foo.gwt иерархии.

Итак, я создал новый модуль MyNewModule.gwt.xml в com.bar и включил подпакеты baz1 и baz2, используя относительные пути в теге. Наконец, я создал Dashboard.gwt.xml для наследования нового модуля.

Это прекрасно работает, когда я компилирую модуль Dashboard, но не работает, когда я компилирую MyNewModule Это потому, что некоторые классы в MyNewModule ссылаются на классы модуля Dashboard.

Я попытался унаследовать модуль Dashboard в MyNewModule. Это создает циклическую ссылку, но GWT не жалуется на это. Все работает, но мне не нравится круговая ссылка. Мне не нужен MyNewModule, все, что мне нужно, это способ включения кода из пакетов вне иерархии модуля Dashboard.

Мне интересно, почему GWT не допускает абсолютных путей к источникам.

Я что-то здесь упускаю?

1 Ответ

3 голосов
/ 29 апреля 2011

Вам не нужно компилировать каждый модуль отдельно. Когда вы компилируете свой проект com.foo.gwt, компилятор GWT будет искать все зависимости в вашем файле com.foo.gwt.xml и скомпилирует ВСЕ файлы * .java как для com.foo, так и для com.bar.baz. (и другие библиотеки) в javascript.

Как вы сказали, правильно поместить MyNewModule.gwt.xml в проект com.bar.baz и «унаследовать» его в файле DashBoard.gwt.xml. Часть, которую вам не хватает, это создать файл .jar с проектом MyNewModule и поместить в папку war / WEB-INF / lib (просто файл gwt.xml и скомпилированные классы java).

...