Как мне скомпилировать модуль без точки входа?
-
05-07-2019 - |
Вопрос
У меня есть служебный модуль для GWT, у которого нет пользовательского интерфейса (следовательно, нет класса, который наследуется от com.google.gwt.core.client.EntryPoint
.Когда я пытаюсь скомпилировать этот модуль с GWT 1.7.1, я получаю эту ошибку:
[ERROR] Module has no entry points defined
Как мне избавиться от этой ошибки?Действительно ли мне нужно определять фиктивную точку входа?Как Google вообще удалось скомпилировать свои собственные служебные модули???
Решение 3
Я использую плагин gwt-maven-plugin
Maven2 для компиляции моего кода. Я перенес код из старой версии плагина maven-googlewebtoolkit2-plugin
. Для старого плагина я должен был указать, какие модули были точками входа, например:
<compileTargets>
<param>com.project.module.Module</param>
</compileTargets>
Для нового плагина это
<module>com.project.module.Module</module>
Поскольку плагин не может найти модули для компиляции, он ищет " *. gwt.xml " и скомпилировал их все в «модули пользовательского интерфейса»; (которая должна иметь точку входа).
Другие советы
Банки утилит не обязательно компилировать с помощью GWT.
Если вы просто хотите повторно использовать это как библиотеку в других приложениях GWT, тогда вам просто нужно поместить файлы .class и .java в один jar и убедиться, что у вас есть .gwt.xml там указано, где находится клиентский источник.Если вы следуете соглашениям (клиентские классы в client), то вам может сойти с рук, просто в противном случае вам нужно указать тег для клиентского пакета
Затем убедитесь, что вы наследуете это.gwt.xml в проектах, где вы хотите скомпилировать точку входа.
Нет, вам не нужно EntryPoint. Вот пример одного из моих модулей, у которого его нет:
<?xml version="1.0" encoding="UTF-8"?>
<module>
<source path="grid" />
<inherits name="com.google.gwt.user.User"/>
</module>
Короткий ответ: вы не компилируете код в модулях. GWT просто нуждается в них в качестве исходного кода. Когда вы компилируете свой основной модуль (тот, который имеет точку входа), он использует исходный код из любых других модулей, которые вы унаследовали в файле .gwt.xml, чтобы скомпилировать весь проект.
У нас есть модуль утилит, который создает & amp; обрабатывает некоторые общие элементы пользовательского интерфейса и несколько общих задач javascript / json.
Похоже, что то, что мы сделали (также перенесли из плагина totsp в плагин codehaus где-то вдоль линии), заключалось в том, чтобы включить точку входа в модуль util; это было просто пусто. (Включает комментарий «Преднамеренное отсутствие операции»). Р>
Тогда пом просто называет эту вещь зависимостью.
Если вы используете плагин eclipse GWT, просто удалите модуль без EntryPoint из списка модулей, который появляется перед компиляцией. Р>