Erzwingen Sie, dass der GWT-Compiler ungültige CompilationUnits nicht mehr schneidet

Ich habe ein Projekt in PlayN, mit dem ich eine einzelne Java-Codebasis für jede Plattform unter der Sonne kompilieren kann. Ich baue gegen GWT-Trunk, mit dem derzeit GWT.create () in reinen Java-Implementierungen aufgerufen werden kann. Es gibt einige zu überspringende Rahmen, nämlich den Aufruf von ServerGwtBridge.getInstance (). Register (String.class, new ClassInstantiator () {...}); für jede Klasse, die von GWT.create () verwendet wird.

Anstatt jede Bindung manuell zu codieren, habe ich einige Anmerkungen zu meinen Klassen erstellt und einen Generator erstellt, der den Initialisierungscode ausgibt, der zum Registrieren der ClassInstatiators erforderlich ist. Der Generator läuft einwandfrei auf GWT-Modulen, und ich habe ein Maven-Mojo erstellt, um den Generator auch für meine reinen Java-Klassen auszuführen. So können jetzt alle meine Module, GWT, Java und Android GWT.create () verwenden, und ich kann das Ersetzen durch die Syntax aus den Moduldateien von GWT.XML unterstützen.

Das Problem ist, dass alle Klassen, die auf von gwt nicht unterstützte Klassen oder Methoden verweisen, vom gwt-Precompiler gelöscht werden. Sie sind noch im Einheiten-Cache vorhanden, werden jedoch vom TypeOracle des Generators nicht mehr angezeigt. Ich möchte keine großen Mengen an Code kopieren und einfügen, um zu verhindern, dass der Compiler ungültige Einheiten entfernt. Ich habe eine Codereferenz NameEnvironmentAnswer gesehen, die ungültige Einheiten in der Kompilierung zuzulassen scheint, aber nicht herausfinden konnte, wie sie funktioniert.

Ich habe nicht die Absicht, diesen Code zu verknüpfen. Ich möchte nur, dass ein gefülltes TypeOracle für meinen Generator ausgeführt wird. Das bedeutet, dass der Compiler keine ungültigen Einheiten mehr beschneidet.

Antworten auf die Frage(0)

Ihre Antwort auf die Frage