1

我想进行一些更改AbstractCellTable class(将某些字段和方法的可见性更改为受保护或公共等)。我已经克隆AbstractCellTable.java了文件,对其进行了更改并将其放入我的 Eclipse 项目“commons”中(具有相同的包名com.google.gwt...)。

其他一些 GWT 项目使用commonsproject. 它们在同一个 Eclipse 工作区中,并使用来自commons. AbstractCellTable class我可以编译它们并使用标准 GWT Eclipse 插件替换它们。

当我想将我的项目更改为 Maven 项目时,就会出现问题。项目安装没有问题commons(mvn clean install)。更改的源文件AbstractCellTable.java出现在生成的 jar 文件中。但是当我编译依赖项目时,我得到了编译错误。我现在没有stacktrace,但是这个问题的原因在于GWT编译器使用原始版本的AbstractCellTable class. 错误表明commons.jar即使之前已正确安装也存在编译错误(原文如此!)。

我已经尝试更改依赖项的顺序pom.xml,但它不起作用。我正在考虑gwt-user.jar在我的仓库中安装自己的版本,但这并不容易,因为 GWT 项目不依赖 Maven。

有没有更好的解决方案来替换原来的 GWT 类?

4

2 回答 2

1

如果你想编辑 GWT 文件,你需要创建一个同名的文件,并将它放在你的应用程序中与 gwt 相同的包结构中。

例如:AbstractCellTable位于gwt-user jar中的com.google.gwt.user.cellview.client包中。所以你的包中需要有相同的包结构。

另一种方法是创建自己的 maven 模块,例如custom-gwt-user并将gwt-user作为其依赖项。并再次遵循相同的包结构。在入口点包中添加依赖项时,确保您在plugins->plugin->dependencies->dependency下提到了 gwt-user 依赖项,并在dependencies->dependency和 make下添加custom-gwt-usergwt-user两个依赖项确保您的 custom-gwt-user 排在第一位。

于 2013-06-20T10:54:16.193 回答
1

您可以使用延迟绑定方法将现有类替换为您自己的新类。在您的 module.gwt.xml 文件中添加与此类似的行:

<replace-with class="com.stuff.something.MyClss">
     <when-type-is class="com.google.gwt.user.client.pathtoclass.AbstractCellTable"/>
</replace-with>
于 2013-06-20T21:12:14.760 回答