2013-06-19 29 views
1

我想對AbstractCellTable class進行一些更改(將某些字段和方法的可見性更改爲受保護或公共等)。我已經克隆了AbstractCellTable.java文件,對其進行了更改並將其放入我的Eclipse項目的「公共」(具有相同的包名稱com.google.gwt...)。如何覆蓋/替換Maven項目中的GWT類?

其他一些GWT項目使用commons項目。它們位於相同的Eclipse工作區中,並使用commons的源依賴項。我可以編譯它們並使用標準的GWT Eclipse插件替換AbstractCellTable class

當我想將項目更改爲Maven項目時,會出現此問題。安裝commons項目(mvn clean install)沒有問題。生成的jar文件中出現更改的源文件AbstractCellTable.java。但是當我編譯依賴項目時,我收到編譯錯誤。我現在沒有堆棧跟蹤,但是這個問題的原因在於使用GWT編譯器原始版本AbstractCellTable class。錯誤表明commons.jar有編譯錯誤(原文!),即使早期安裝正確。

我已經嘗試更改pom.xml中的依賴關係的順序,但它不起作用。我正在考慮在我的回購庫中安裝gwt-user.jar的版本,但這並不容易,因爲GWT項目不依賴Maven。

有沒有更好的解決方案來取代原有的GWT類?

回答

1

如果您想編輯GWT文件,您需要創建一個具有相同名稱的文件,並將其與gwt中的應用程序放在同一個包結構中。

例如:AbstractCellTable是在com.google.gwt.user.cellview.client包在GWT-用戶罐子。所以你需要在你的軟件包中有相同的包裝結構。

另一種方法是創建自己的Maven模塊說定製GWT用戶,並有GWT用戶作爲其依賴。並再次按照相同的封裝結構。同時加入您的入口點軟件包的依賴關係,使插件 - > plugin-> dependencies->依賴下確保你所提到的GWT用戶的依賴,並添加定製GWT用戶的兩個依賴和GWT用戶dependencies-> dependency並確保您的custom-gwt-user是第一個訂單。

1

您可以使用延遲綁定方法用您自己的新類替換現有的類。在你的module.gwt.xml文件中添加類似如下的行:

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

這隻適用於使用GWT.create()創建的類, – robert