#gwt
#gwt
Вопрос:
В GWT есть опция для обфускации имен перечислений:
<set-configuration-property name="compiler.enum.obfuscate.names" value="true" />
Когда я использую этот параметр, мои компиляции выдают предупреждение:
[WARN] Call to Enum method name when enum obfuscation is enabled:
com/google/gwt/dom/client/DataTransfer.java:127
Глядя на DataTransfer
исходный код, я вижу, что в нем есть перечисление DropEffect
, и имена перечислений используются в одном из методов ( setDropEffect
).
Я использую современный GWT, ориентированный на JsInterop, поэтому я не использую этот DataTransfer
класс (или что-либо в gwt-user.jar
). Раздражает наличие бесполезного предупреждения. Есть ли простой способ избавиться от этого?
Я знаю, как исключить файлы из моих собственных исходных папок.
Возможно ли исключить исходные папки из gwt-user
? (Кроме физического удаления файлов из jar!)
Ответ №1:
Это похоже на ошибку — к сожалению, компилятор не удаляет этот класс. Это должно быть легко исправить с помощью исправления для GWT, добавив поле для имени в dropEffect, поскольку его никогда нельзя удалять, даже если этот флаг компилятора включен.
Возможно ли исключить исходные папки из gwt-user? (Кроме физического удаления файлов из jar!)
Что вы должны сделать, так это исключить сам .gwt.xml
файл, не наследуя его вообще, даже транзитивно. Так, например, если вы избегаете всех JSNI, включая типы виджетов в User
модуле, вы .gwt.xml
не должны ссылаться на Dom
модуль или User
или на что-либо еще, что ссылается Dom
. Но как только модуль был унаследован, нет никакого способа «отменить наследование» его. И как только модуль наследуется, его исходные коды добавляются и не могут быть удалены.
Комментарии:
1. Верно, это транзитивная зависимость. Я не использую никаких виджетов, но я зависю от модулей для GSS —
com.google.gwt.i18n.I18N
иcom.google.gwt.resources.Resources
. Последнее зависит отcom.google.gwt.dom.DOM
и вот гдеDataTransfer
живет. Вы знаете, были ли эти модули GSS переписаны для JsInterop или есть ли им лучшая альтернатива?2. На самом деле, я задам это как отдельный вопрос.
3. У них есть, хотя я не думаю, что эта ошибка была исправлена. Они также еще не были выпущены в maven Central.
4. Потрясающе! Я не могу дождаться выхода GWT 3. Я надеюсь, что это произойдет в моей жизни 🙂
5. Принося извинения Уильяму Гибсону, J2cl здесь, просто он распределен неравномерно. J2cl-maven-plugin, над которым я работаю (сейчас в отпуске, скоро вернется), функционирует так же, как «ltgt» gwt-maven-plugin, и не использует a .gwt.xml файл, но переносит любые источники, которые вы ему предоставляете, в ваше дерево зависимостей.