2012-05-01 7 views
1

gwtで独自の遅延バインディングレイヤを作成するカスタムジェネレータがありますが、純粋なJavaモジュールでも生成されたコードを使用する必要があります。私のgwtジェネレータはすでにクラスの注釈として "現在のバインド設定"を出しているので、純粋なJavaインスタンシエータの同等の定型文を生成したいと思っています。GWTジェネレータ/リンカを使用して生成された成果物をソースディレクトリに出力します

リンカステージや生成ステージでも、生成されたファイルを自分の作業ソースパッケージ{R.javaのアンドロイドジェネレータのように}に出力する必要があります。どのように私は任意に私のソースフォルダにJavaファイルを放出するのですか?私はjava.io.Fileを使うべきですか?私はsoycのようなコンパイラのフラグを取って、ユーザが生成されたソースをどこに置くかを定義できるようにしたいと考えています。

+0

このスレッドをご覧くださいhttp://stackoverflow.com/questions/5975510/debug-view-source-of-gwt-generated-java-code – krishnakumarp

+0

Hm。私はすでに、ソースを別のディレクトリに放出するために-genを使用することを知っていました。私は他のすべての生成されたソースを除外し、リンク時に必要なファイルを吐き出すことを望んでいました。おそらく、私は、外部から必要なソースだけを実行するmavenの実行をセットアップし、プロジェクトビルドパスを送信して正しい場所に置くようにします。 – Ajax

+0

私は、私が特にsrcフォルダに移動したい生成されたコードだけをターゲットにすることを可能にするmaven mojoを書いています...しかし、クロスする新しいハードルがあります。http://stackoverflow.com/questions/10836760/force -gwt-コンパイラからストッププルーニング - 無効なコンパイルを行います。つまり、無効なユニットがコンパイラによって削除されないようにします。 – Ajax

答えて

0

誰も答えなかったので、私はそこにこのハックを投げます。

StandardGeneratorContext $ GeneratedUnitWithFileをオーバーライドします。

FileOutputStream fos = null; 
    try { 
    fos = new FileOutputStream(file); 
    diskCache.transferToStream(sourceToken, fos); 
    } 

したいしかし、保存されたファイルをリベースするためにこれを使用

File newFile = rebaseFile(file); // Make a copy wherever you need 
    diskCache.transferToStream(sourceToken, fos); 

を追加しますため ルック。静的なThreadLocalを使用して、コピーを保存する場所をジェネレータに指示することをお勧めします。これは、ジェネレータサブシステムがStandardGeneratorContext(通常はGWT.createの最後)で.finish()を呼び出すときに呼び出されます。保留中のPrintWriterをコミットする必要がない限り、手動で呼び出すことができます。

関連する問題