Как избавиться от этого бесполезного предупреждения компилятора GWT?

#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 файл, но переносит любые источники, которые вы ему предоставляете, в ваше дерево зависимостей.