2017-09-15 1 views
1

Je tente de transmettre des classes de modèle Java à JavaScript à l'aide de JSweet. Les classes de modèle contiennent des annotations JPA telles que @Column. La transpiration échoue dès qu'elle rencontre import javax.persistence.Column. Les annotations JPA ne sont pas pertinentes en JavaScript et ne doivent pas être diffusées. Cela peut-il être fait sans changer le code Java?Gestion des annotations Java dans JSweet

Plus généralement, existe-t-il un moyen pour JSweet d'ignorer les instructions d'importation, par exemple lorsque toutes les références aux packages importés sont dans les méthodes @Erased?

Répondre

0

Normalement, JSweet efface simplement les annotations inconnues, donc votre code devrait bien se passer.

Première chose à vérifier: avez-vous un JPA JPA dans votre chemin de classe ou dans vos dépendances Maven? JSweet utilise javac, qui requiert que tous les types soient dans le classpath. Je suppose que l'annotation @Column devrait être là: https://mvnrepository.com/artifact/javax.persistence/persistence-api/1.0.2

Pour la deuxième partie de votre question, JSweet v2 fournit une API pour régler la génération du code. Voir le specs. Dans l'API PrinterAdapter, vous pouvez remplacer la méthode needsImport pour renvoyer null lorsque l'importation n'est pas nécessaire. Cependant je crois que vous n'avez pas besoin de ceci pour votre cas puisque les annotations sont effacées automatiquement.

+0

Merci. En effet, j'ai oublié de mentionner javax.persistence dans le pom, puisque nous n'utilisons pas Maven pour le processus de construction normal. Est-ce que le plugin Eclipse est la seule alternative si je ne veux pas utiliser Maven? – warakawa

+0

Vous pouvez également utiliser Ant avec le lanceur de ligne de commande. Je pense qu'il existe un build.xml dans le projet jsweet-examples: https://github.com/cincheo/jsweet-examples (mais vous pouvez gérer vos dépendances manuellement plutôt qu'avec Maven). –