2016-04-22 7 views
0

Ich habe einige Quelldateien mit der Funktion <super-source> (GWT 2.7) erfolgreich emuliert.Hook in GWT vor der Kompilierung, um weitere Quellen hinzuzufügen

Aber ich bekomme "falsche Paketname" Fehler in Eclipse.

Der GWT-Compiler benötigt die Java-Dateien, um den ursprünglichen Paketnamen zu haben, aber Eclipse benötigt für sie den Paketnamen, der ihrem Platz im Quellordner entspricht.

Gibt es eine Möglichkeit, den GWT-Compiler programmatisch einzubinden, bevor die emulierten Quelldateien kompiliert und hinzugefügt werden? Ich denke, dass ich die Paketdeklaration unter Verwendung replaceAll() anpassen konnte, bevor der GWT-Compiler sie betrachtet.

Als temporäre Arbeitsumgebung führe ich vor dem Kompilieren einen separaten Schritt aus, der diesen Trick ausführt. Es funktioniert, aber es wäre besser, es als Teil des eigentlichen Kompilierungsprozesses zu haben, so dass das Aktualisieren der Seite im Super Dev-Modus diesen Prozess automatisch ausführt.

Ich habe Generatoren angeschaut, aber ich sehe keinen Weg, es mit ihnen zu machen.

Die andere Idee, die ich in Betracht gezogen habe, macht das Kopieren Teil der Eclipse-Kompilierung. Jedes Mal, wenn ich eine der emulierten Klassen speichere, kann sie die Quelle kopieren und neu packen. Aber ich bin auf Windows und das einrichten ist ein bisschen eine Faff und es ist nicht Teil der normalen Kompilierung, also müsste ich diese Aktionen in meinem Build-Skript replizieren.

Antwort

1

Eclipse klagt, weil es sie kompilieren will, was es nicht tun sollte. Sie sollten die Super-Quellen von Eclipse ausschließen, damit sie nur als Ressourcen/Textdateien angezeigt werden. Wenn Sie die Eclipse-Funktionen beim Bearbeiten dieser Dateien wirklich benötigen, können Sie Ihr "" -Paket als Quellordner hinzufügen, und Eclipse wird sich nicht mehr über falsch zugeordnete Paketnamen beschweren (könnte aber Probleme mit doppelten Klassen haben) zwischen dem Original und dem von Super-Quellen, auch Eclipse wird sie kompilieren, und wenn sie in Ihrem Klassenpfad zur Laufzeit/DevMode enden, könnte es möglicherweise fehlschlagen, Ihre App verwendet die Super-Quellen anstelle der ursprünglichen Klassen in der JVM)

TL; DR: Das Problem ist Eclipse, nicht GWT.

+0

Danke Thomas. Ich möchte beide Versionen im selben Projekt haben und den Eclipse Java Editor für beide verwenden. Leider wird keiner dieser Vorschläge es erlauben. Es wäre alles wunderbar, wenn es GWT egal wäre, dass die Paketdeklaration genau übereinstimmt - wenn es ein Paket mit Super-Präfix in einen echten Paketnamen übersetzen könnte. Mein Ansatz macht das und es funktioniert, ist aber ein bisschen ungeschickt. Ich nehme an, dann gibt es keine Möglichkeit, in den Compiler, den Sie kennen, einzuhaken? –

Verwandte Themen