2009-08-11 5 views
1

J'utilise le même code source pour une application GWT 1.5 et GWT 1.7.Compilation conditionnelle GWT

Je me demande s'il existe un moyen de compiler de manière conditionnelle des parties du code java pour l'une ou l'autre version.

Je sais qu'il existe un moyen de le faire pour les widgets et les navigateurs dans le fichier XML du module.

+0

Je ne pense pas. Pourquoi compileriez-vous pour deux sources GWT? Nous sommes allés de 1,5 à 1,7 sans problèmes. –

+1

Nous avons fait. Mais dans un cas, l'ancien (1.5) et le nouveau (1.7) code compilé ne se comportent pas de la même manière. C'est une combinaison de Java et de scripts insérés natifs. Déplacer l'ancien code (1.5) vers les nouvelles interfaces supprimant tous les appels obsolètes est actuellement beaucoup de travail. – Drejc

Répondre

1

La solution est très simple.

String version = GWT.getVersion(); 
if (version.startsWith("1.5")) 
{ 
    // do something the 1.5.* way 
} 
0

Si vous voulez vraiment faire cela, je suppose que l'approche serait d'utiliser un générateur.

Avec un générateur, vous pouvez avoir une liaison différée (un peu l'introspection d'un homme pauvre). Pour accéder au code 1.5 ou 1.7, vous devez ensuite définir l'API générique dans une interface et utiliser GWT.create pour obtenir l'implémentation concrète.

0

si (version.startsWith ("1,5")) { // faire quelque chose que le 1.5. * Manière }

est en fait une sorte de mauvaise idée. Idéalement, vous devriez utiliser des valeurs de chaînes absolues ici, car le compilateur GWT évaluera l'égalité et ajustera le code inaccessible à l'intérieur d'un if conditionnel à partir de la sortie compilée. Utiliser .startsWith signifie que tout le code se retrouvera dans l'application finale.

Malheureusement, la version GWT n'est pas une propriété de compilation. Peut-être la meilleure façon de le faire serait de créer une implémentation vide Generator qui retourne juste "ClassName15" ou "ClassName17" d'un appel dans votre module pour "ClassName". Vous pouvez alors, au moment de la compilation, appeler About.version() du générateur et découvrir quelle est la version au moment de la compilation.

+0

Merci de l'avoir signalé, mais c'est la seule solution que j'ai trouvée. Et ce n'est que pour un petit extrait de code. Donc, la solution fonctionne très bien pour moi. – Drejc

Questions connexes