Исходный XML-модуль модуля GWT для указания одного класса - PullRequest
0 голосов
/ 27 мая 2019

У меня есть приложение GWT (FooGwtApp) и библиотечный модуль (FooLib), используемые в качестве зависимости в FooGwtApp.Структура пакета FooLib выглядит следующим образом:

packageFoo.ImportantClass
packageFoo.UnimportantClass
packageBar.OtherClass

Я хочу, чтобы ImportantClass (и только ImportantClass) компилировался в JS компилятором GWT.Перемещение ImportantClass в другой пакет не является вариантом.

Я создал ImportantClass.gwt.xml в файле packageFoo со следующим содержимым:

<module>
    <inherits name="com.google.gwt.user.User"/>
    <source path="" includes="**/ImportantClass*"/>
</module>

Далее я поместил унаследованную ссылку на определение модуля ImportantClass.в FooGwtApp.gwt.xml (похоже, это работает: IDE распознает его и может анализировать ссылку на ImportantClass.gwt.xml).

Теперь, если я добавлю ссылки на ImportantClass в код клиента FooGwtApp,сбой компилятора GWT, поскольку он не находит важный класс в исходном пути:

Исходный код для типа packageFoo.ImportantClass недоступен;Вы забыли унаследовать требуемый модуль?

Скорее всего я что-то напутал в пути к исходному тексту / включил атрибут ImportantClass.gwt.xml - либо определил текущий пакет как корневой пакет с путем = ""не является допустимой нотацией или что-то не так с атрибутом include.Или оба.Или ни того, ни другого.

Можете ли вы дать мне подсказку о том, где все пошло не так?

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Оказывается, проблема была не в файле ImportantClass.gwt.xml, а в других материалах, связанных с Maven. А именно:

  • ImportantClass.gwt.xml должен быть помещен в src / main / resources / packageFoo, а не в src / main / java / packageFoo, иначе это не будет упакован в бинарный сосуд.

  • Компилятор GWT компилируется из Java source в источник Javascript. Это означает, что нам нужен не только файл ImportantClass.class в FooLib.jar, но и его источник. Лучшим решением для этого является использование maven-source-plugin в pom.xml FooLib, а также импорт зависимости FooLib в FooGwtApp с классификатором источников.

По последней теме см. Следующие ответы SO:

Maven: распространять исходный код с помощью jar-with-dependencies

Как правильно включить исходники Java в Maven?

После исправления вышеуказанных проблем работает объявление пути к исходному тексту, присутствующее в вопросе.

Модераторы : если этот вопрос и / или ответ не соответствует стандартам качества SO, отправьте мне сообщение, и я его удалю или исправлю другим способом. (Мне это немного неловко, но я не совсем уверен, как лучше это исправить.)

0 голосов
/ 28 мая 2019

Исходный путь в файле модуля GWT относится к самому файлу модуля.Так что, если вы создали ImportantClass.gwt.xml в packageFoo, вы хотите это:

<source path="ImportantClass"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...