Empaquetage et déploiement D'un programme Jython à partir D'Eclipse
donc j'ai été enfermé dans un casier pour écrire un code Jython. J'ai utilisé la dernière version D'Eclipse IDE avec le plugin PyDev pour le développement. Jusqu'à présent, les choses étaient modérément supportables. J'ai fait fonctionner tous mes scripts Python et j'ai réussi à inclure quelques fichiers JAR et le répertoire de classe D'un autre projet Java comme dépendances externes. Tout semble aller bien à travers L'éclipse.
maintenant je dois emballer le tout et de le déployer. D'après ce que j'ai compris, la meilleure façon de faire ça serait de tout emballer dans un fichier JAR. La documentation Jython suggère de commencer par le jython.fichier jar et en ajoutant à cela. OK. Je modifie donc mon module python principal et commence à ajouter toutes mes sources python dans le JAR.
Il s'exécute mais bien sûr, ne peut pas trouver toutes les dépendances externes.
Comment est-on censé ajouter les dossiers de pot externes pour qu'ils soient vu correctement par l'interprète Jython? Comment gérer des dépendances plus complexes dans une configuration comme celle-ci?
est - ce qu'il y a un plugin pour Eclipse ou peut-être quelque chose comme Ant ou Maven qui peut gérer toutes ces étapes pour moi avec la pression d'un bouton?
je ne peux pas être la première personne qui a besoin de déployer Jython code avec dépendances complexes puis-je?
2 réponses
j'ai fait quelques progrès sur obtenir tout cela fonctionne donc j'ai pensé que je mettrais quelques notes ici au cas où ils aident quelqu'un d'autre. J'aimerais quand même que d'autres me racontent ce qu'ils ont vécu en essayant de faire quelque chose comme ça.
il s'avère Qu'Eclipse à partir de 3.5 a une option d'exportation de projet pour le fichier jar Java -> Runnable. Si vous utilisez cette option, vous pouvez pointer vers une classe principale Java dans l'Assistant d'exportation. Vous avez également la possibilité de l'avoir reconditionner tous les pots dont vous dépendez dans votre nouveau fichier JAR. Assurez-vous que la case à cocher pour enregistrer l'exportation comme une FOURMI construire de sorte que vous pouvez répéter le processus rapidement. Notez que la première fois que vous faites cela via l'interface, cela peut échouer, mais il aura quand même créé un fichier JAR.
voilà où ça devient étrange. Pour suivre toutes les dépendances, j'utilise encore une construction Maven incomplète dans mon projet. Je crée le Maven .Fichier POM. Et J'ai dit à Maven ce que mon externe POT de dépendance. J'ai alors dit à Maven de faire une mise à jour de la dépendance pour moi. Il a tout rentré dans mon dépôt Maven comme prévu.
maintenant quand je fais ma construction de fourmi, il semble qu'il obtient sa liste de jarres à inclure dans la construction finale de Maven. Je ne suis pas vraiment sûr si c'est censé fonctionner de cette façon. Je suis également pas sûr à 100% que cela fonctionne. Je suppose que je le découvrirai quand je devrai ajouter un autre bocal externe au projet.
Quoi qu'il en soit, si vous suivez cette question vous verrez que vous pouvez prendre les dernières constructions de Jython et tirer l'org.Python.util.JarRunner.java fichier et l'utiliser dans votre propre projet. C'est vous Java.classe principale que vous aurez besoin de pointer votre ANT. De là, convertissez votre script Python/Jython principal pour être le script run dont il a été question dans cette question.
ensuite, construisez une autre copie du Jython JAR fichier dans votre Jython répertoire. Celui-ci devrait avoir le répertoire /Lib dans le bocal. Sauvegardez cela et ensuite pointez votre option de construction de jave D'IDE Eclipse pour votre projet PyDev à ce JAR comme une dépendance externe. Votre JarRunner va maintenant fonctionner et exécuter le exécuter .dossier py sous Jython.
si tout cela fonctionne, vous devriez alors être en mesure de rediriger la construction exportée ANT à partir de plus tôt et vous finirez avec un seul fichier JAR que vous pouvez exécuter sur la ligne de commande:
java-jar {yourjar} args
et distribuer à vos clients sans aucune dépendance supplémentaire.
si tout cela semble un peu compliqué, il est. Si quelqu'un a une meilleure façon de configurer tout cela en utilisant Eclipse, s'il vous plaît faites le moi savoir.
rendre votre vie plus facile et il suffit d'utiliser Maven et le mavenjython compiler plugin.
voir ma réponse à cette question: en utilisant Jython avec Maven
vous obtenez l'automatisation complète du processus de construction et de déploiement, et le résultat est un pot qui inclut jython et toutes les autres dépendances.