1

いくつかの変更を加えたいですAbstractCellTable class(いくつかのフィールドとメソッドの可視性を保護または公開などに変更します)。AbstractCellTable.javaファイルを複製し、変更を加えて、Eclipse プロジェクトの「commons」(同じパッケージ名com.google.gwt...) に入れました。

他のいくつかの GWT プロジェクトはcommonsproject を使用します。それらは同じ Eclipse ワークスペースにあり、.NET からのソース依存関係を使用しますcommonsAbstractCellTable classそれらをコンパイルして、標準の GWT Eclipse プラグインを使用して置き換えて使用できます。

プロジェクトをMavenのものに変更したいときに問題が発生します。commonsプロジェクトのインストール(mvn clean install)は問題ありません。の変更されたソース ファイルAbstractCellTable.javaが、生成された jar ファイルに表示されます。しかし、依存プロジェクトをコンパイルすると、コンパイル エラーが発生します。現在、スタックトレースはありませんが、この問題の原因は、GWT コンパイラのオリジナル バージョンのAbstractCellTable class. エラーは、commons.jar以前に適切にインストールされていたとしても、コンパイル エラー (sic!) があることを示しています。

で依存関係の順序を変更しようとしましたが、うまくいきpom.xmlません。リポジトリに独自のバージョンをインストールすることを考えてgwt-user.jarいますが、GWT プロジェクトは Maven に依存していないため、簡単ではありません。

元の GWT クラスを置き換えるより良い解決策はありますか?

4

2 に答える 2

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 に答える
1

GWT ファイルを編集する場合は、同じ名前のファイルを作成し、アプリケーション内の gwt と同じパッケージ構造に配置する必要があります。

例: AbstractCellTableは、gwt-user jarのcom.google.gwt.user.cellview.clientパッケージにあります。したがって、パッケージに同じパッケージ構造が必要です。

もう 1 つの方法は、custom-gwt-user という独自の Maven モジュールを作成し、 gwt-userを依存関係として持つことです。また、同じパッケージ構造に従います。エントリポイント パッケージに依存関係を追加するときは、 plugins->plugin->dependencies-> dependency の下に gwt-user 依存関係が記載されていることを確認し、 dependency-> dependencyの下にcustom-gwt-usergwt -userの 2 つの依存関係を追加して make custom-gwt-user が最初にあることを確認してください。

于 2013-06-20T10:54:16.193 に答える