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
(。
我使用的是现代面向JsInterop的GWT,所以我没有使用这个DataTransfer
类(或gwt-user.jar
中的任何东西(。有一个无用的警告是令人讨厌的。有没有一种简单的方法可以摆脱它?
我知道如何排除我自己的源文件夹中的文件。
是否可以从gwt-user
中排除源文件夹?(除了从jar中物理删除文件!(
这看起来像是一个错误——不幸的是,编译器没有删除这个类。这应该很容易通过GWT的补丁来修复,在DropEffect中为名称添加一个字段,因为即使启用了编译器标志,也决不能删除它。
是否可以从gwt用户中排除源文件夹?(除了从jar中物理删除文件!(
您必须排除.gwt.xml
文件本身,方法是完全不继承它,甚至不进行转换。因此,例如,如果您确实避免了User
模块中包含Widget类型的所有JSNI,则.gwt.xml
不应该引用Dom
模块、User
或任何引用Dom
的其他模块。但是一旦一个模块被继承,就没有办法"无继承人";一旦继承了一个模块,就会添加它的源,而不能取消添加。