2012-11-01 22 views
10

Ist es möglich, eine Annotation (oder eine andere Möglichkeit) zu erstellen, um den GWT-Compiler zu zwingen, eine Methode nicht zu kompilieren? Ich habe eine Klasse, die ich auch auf app-engine (in einem freigegebenen Ordner) verwenden und eine Methode in es erfordert eine serverseitige Funktion, die GWT nicht kompilieren verursacht. Ich möchte, dass GWT die Methode einfach ignoriert (während appengine nicht).Anmerkung für GWT-Compiler zu ignorieren Methode

Ich habe entweder eine Annotation oder ein Skript vor der Kompilierung gefunden, das die Methode vor der Kompilierung löscht. Beide Methoden würden für mich funktionieren, es wäre am besten, wenn ich noch über die Eclipse-IDE kompilieren könnte.

Hat noch jemand daran gedacht oder es versucht?

Antwort

12

Nicht bis jetzt. Kürzlich wurde eine solche Anmerkung hinzugefügt @com.google.gwt.core.shared.GwtIncompatible("Description why..."). Es ist anwendbar auf Klassen oder Methoden.

Aber der Patch-Code wurde noch nicht veröffentlicht! Offizieller Status ist FixedNotReleased. Und ich kann persönlich bestätigen, es ist nicht in der aktuellen GWT 2.5.1 Version. Ich hoffe auf den kommenden 2.5.2.

See:

http://code.google.com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/core/shared/GwtIncompatible.java?spec=svn11570&r=11570

http://code.google.com/p/google-web-toolkit/issues/detail?id=3769

https://gwt-review.googlesource.com/#/c/2320/

Hinweis gibt es bereits ähnliche Anmerkung com.google.gwt.thirdparty.guava.common.annotations.GwtIncompatible in gwt-dev.jar jedoch es nicht funktioniert, Compiler noch will mein kompilieren inkompatible Methode in der gemeinsamen Klasse.

+1

Dies kommt offiziell in GWT 2.6: https://docs.google.com/document/d/1ZdMwcTjc4rkWg6nntCY1BDB1xI2PHPwaCnTYw-9uAKE/edit –

+0

@GwtIncompatible ist ein Teil von GWT 2.8.x (die eine stabile Release, vielleicht sogar frühere Versionen) – xamde

7

Vor der GWT-Version 2.6 gibt es keine Annotation, die den GWT-Compiler dazu veranlasst, eine Methode zu ignorieren. Es gibt eine requests dafür im GWT Issue Tracker, und anscheinend ist es für die 2.6-Version geplant.

Eine Abhilfe Ansatz ist es, die „anstößigen“ Methode in einer Klasse für sich zu haben und diese Klasse in Ihrer .gwt.xml Datei ignorieren:

<source path="gwtclient"> 
    <exclude name="AppEngineOnlyClass.java" /> 
    ... 
</source> 
... 

Hoffnung, das hilft ein wenig.

Prost,

+2

Beachten Sie, dass 'AppEngineOnlyClass' die' AppEngineAndGwtClass' so erweitern kann, dass sie alles übernimmt, was sowohl für GWT als auch für GAE gültig ist. –

+0

Ausgezeichneter Punkt Boris. –

Verwandte Themen