3

私は、単一の Java コードベースを太陽の下のすべてのプラットフォームにコンパイルできるようにするプロジェクトを PlayN に持っています。現在、純粋な Java 実装で GWT.create() を呼び出すことができる gwt トランクに対して構築しています。ServerGwtBridge.getInstance().register(String.class, new ClassInstantiator() {...}); の呼び出しなど、ジャンプする必要があるいくつかのフープがあります。GWT.create() によって使用されるすべてのクラス。

そのため、すべてのバインディングを手動でコーディングするのではなく、クラスにいくつかの注釈を設定し、ClassInstatiators の登録に必要な初期化コードを吐き出すジェネレーターを作成しました。ジェネレーターは gwt モジュールで正常に動作し、純粋な Java クラスでもジェネレーターを実行する Maven mojo を作成しました。これで、すべてのモジュール、gwt、java、および android で GWT.create() を使用できるようになり、gwt.xml モジュール ファイルから置換構文をサポートできるようになりました。

問題は、gwt でサポートされていないクラスまたはメソッドを参照するクラスが、gwt プリコンパイラによって削除されることです。それらはまだユニット キャッシュに存在しますが、ジェネレーターの TypeOracle はそれらを認識しなくなります。大量のコードをコピーして貼り付けて、コンパイラが無効なユニットを削除するのを阻止したくありません。コンパイルで無効なユニットを許可しているように見えるコード参照 NameEnvironmentAnswer を見ましたが、それを機能させる方法を理解できませんでした。

このコードをリンクするつもりはありません。ジェネレーターを実行するために、入力された TypeOracle が必要なだけです。つまり、コンパイラーが無効なユニットのプルーニングを停止する必要があります。

4

0 に答える 0