如何在Maven项目中覆盖/替换GWT类?

时间:2013-06-19 10:12:24

标签: java maven gwt maven-3

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

其他一些GWT项目使用commons项目。它们位于相同的Eclipse工作区中,并使用commons中的源依赖项。我可以编译它们并使用标准GWT Eclipse插件替换AbstractCellTable class

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

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

有没有更好的解决方案来取代原有的GWT课程?

2 个答案:

答案 0 :(得分:1)

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

例如: AbstractCellTable 位于 gwt-user jar中的 com.google.gwt.user.cellview.client 包中。因此,您需要在包中使用相同的包结构。

另一种方法是创建自己的maven模块,例如 custom-gwt-user ,并将 gwt-user 作为其依赖项。再次按照相同的包结构。在入口点包中添加依赖项时,请确保在 plugins->插件 - >依赖项 - >依赖下提及了gwt-user依赖项,并添加了 custom-gwt的两个依赖项依赖关系 - >依赖下的-user gwt-user ,并确保您的custom-gwt-user在订单中排在第一位。

答案 1 :(得分:1)

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

<replace-with class="com.stuff.something.MyClss">
     <when-type-is class="com.google.gwt.user.client.pathtoclass.AbstractCellTable"/>
</replace-with>