2017-07-25 6 views
2

Dans notre organisation, nous avons plusieurs projets générés JHipster, ils ont été réalisés avec la version 3.0.0 et nous ne les ont pas mis à jour depuis.Jhipster mise à niveau

Je travaille sur l'amélioration de l'un d'entre eux pour les 5 derniers jours, s'il vous plaît trouver ci-dessous ventilation:

J'ai essayé trois approches différentes:

1.- Utilisez les jhipster:upgrade outil

étapes:

Ce processus pourrait se décomposer en plusieurs étapes telles que:

dossier npm 1.- Création d'local pour pouvoir installer des générateurs pour différentes versions jhipster sans problème persmission

toutes les anciennes 2.- Effacer installations de yo et jhipster

projet de clonage et 3.- créant des branches dev

4.- Effacer dossier .jhipster si les entités ne sont pas affectées par la mise à niveau

5.- Une fois le code de mise à niveau fonctionne, nous avons besoin de modifier plusieurs fichiers/dépendances afin que le mvn clean/install fonctionne

complications

Après l'application de toutes ces étapes, je trouve que le 2nd level cache de Hibernate refuse de travailler, me demandant d'inclure toutes les classes dans le cache, j'essaie plusieurs corrections/solutions de contournement telles que:

Suppression liquibase du 1.- projet

Configuration DatabaseConfiguration.java avec 2.- anciens paramètres et le téléchargement des anciennes versions des bibliothèques pour cette

Configuration fichier dev.yml 3.- pour commencer comme ancienne version

4.- Désactiver 2nd level cache

Après avoir fait cela le cache et liquibase ne représentent pas un problème, cependant, nous allons à une autre complication, impliquant cette fois les services RememberMe, le paramètre JhipsterProperties pour le constructeur est en vide, je débogués pendant un certain temps, ne trouvant pas d'informations pertinentes sur les e est et a décidé de laisser tomber cette méthode et essayer avec 2

2.- Recréer les étapes de mise à jour manuellement.

Pour cette méthode, je suis le script trouvé dans github: https://github.com/jhipster/generator-jhipster/issues/3761

J'ai installé localement la version 3.4.0 de Jhipster pour essayer de faire une transition en douceur et je ne pas effacer les entités comme dans la méthode 1, mais les fichiers de projet tout ne se charge pas, le upgrade_branch devient élastique et tout ce que je fais, je finis par avoir besoin d'effacer le projet et re-clone il

3.- Utilisez la commande jhipster dans le dossier racine du projet

J'utilise la version 3.4.0 pour cela aussi

Le processus de mise à niveau fonctionne en douceur, change la version dans le fichier package.json et des liens ténus à la base de données première tentative (à l'exception d'avoir à supprimer à nouveau liquibase, qui se reconstitue au cours de mise à niveau)

Cependant nous sommes confrontés à un nouveau problème avec les RememberMe jetons: Custom Persistence RememberMeServices]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: key cannot be empty or null

un peu de recherche:

Il existe un certain nombre de rapports et de tickets git-hub indiquant que jhipster upgrade ne fonctionne pas correctement et, en fait, à ce moment, sur la dernière version, les utilisateurs sont informés qu'ils peuvent avoir besoin d'une mise à niveau manuelle selon ce billet: https://github.com/jhipster/generator-jhipster/issues/5883

J'ai également consulté un ancien collègue qui a essayé et a estimé qu'il était beaucoup plus facile de faire un nouveau projet et de copier le code nécessaire plutôt que d'essayer de migrer manuellement les parties conflictuelles du code Maintenant, je lis aussi dans les tickets du hub git que beaucoup d'utilisateurs semblent mettre à jour leurs projets de manière transparente, alors les questions que j'ai sont:

1.- Est-ce que je suis confronté aux mêmes problèmes que les autres développeurs mais que je ne connais pas assez les technologies pour pouvoir les résoudre?

2.- Existe-t-il une solution à ce genre de problèmes (cache de second niveau et propriété Jhipster ne contenant pas de clé/n'étant pas transmis comme variable à constucteur)?

EDIT

J'ai trouvé réponse à la clé manquante dans JHipsterProperties. Lors de l'exécution yo jhipster il vous demande si vous souhaitez remplacer une série de fichiers, je viens de marquer oui pour tous et donc il a écrasé le application.yml où la clé est stockée pour les propriétés, ne pas le restaurer ou en créer un nouveau. J'ai essayé de courir à nouveau après le clonage du projet de maître et il a bien fonctionné en choisissant de ne pas écraser application.yml (mais écrasant le reste des fichiers)

EDIT 2

J'ai finalement réussi à trier le cache de mise en veille prolongée émission par:

1.- Ajout manuel du cache pour toutes les entités du fichier CacheConfiguration.java, comme ceci:

cm.createCache(org.wwarn.drugquality.domain.AntiretroviralSurveyData.class.getName(), jcacheConfiguration); 
      cm.createCache(org.wwarn.drugquality.domain.Country.class.getName(), jcacheConfiguration); 

Et ainsi de suite avec tous les (48) entités

2.- équipe Jhipster maintenant par défaut région du cache à la configuration jhipster propriétés qui ressemble à ceci:

hibernate.cache.region.factory_class: io.github.jhipster.config.jcache.NoDefaultJCacheRegionFactory 

je devais changer à ceci:

hibernate.cache.region.factory_class: org.hibernate.cache.jcache.JCacheRegionFactory 

Et maintenant, il fonctionne très bien

extrémité avant est cassé et beaucoup de code personnalisé devra être modifié/remplacé, mais je finalement réussi à mettre à jour mon projet v3.0.0-v4.0.8 (en utilisant la commande yo jhipster, comme l'outil de mise à niveau ne fonctionne tout simplement pas pour moi) Maintenant, l'application roule en douceur sur le backend, et prêt pour une lente migration vers Angular 2-4

+1

Votre 2ème question est assez difficile de répondre sans détails. Habituellement, il est préférable de partager des questions. –

+1

'4.- Effacer le dossier .jhipster afin que les entités ne soient pas affectées par la mise à niveau' cela semble étrange, habituellement vous voulez plutôt les garder et re-générer avec' yo jhipster --with-entities' –

+0

@ GaëlMarziou J'efface le .jhipster dossier de sorte que le code personnalisé sur les entités n'a pas été effacé, ce qui est arrivé dans les premières tentatives de mise à niveau – Steven

Répondre

2

La plupart des problèmes de la mise à niveau concernaient Windows et le fil. Si vous utilisez Linux ou OSX et npm < 5, vous êtes dans une meilleure forme. En outre, si vous l'exécutez souvent, les problèmes seront plus faciles à résoudre qu'une grande version de saut que vous avez expérimenté.

Cet outil est très utile mais il est relativement récent, les choses s'amélioreront avec le temps.

Vous pouvez exécuter manuellement les étapes de upgrade en lisant simplement its code, il est assez facile à suivre et à lire its documentation.

+0

J'utilise Linux et une ancienne version de npm (3.10.10) :(** si vous l'exécutez souvent ** c'est pourquoi j'ai essayé avec le 3.4.0 donc ce n'était pas un grand saut, mais n'avait toujours pas de chance ** exécuter manuellement ** Je n'avais pas pensé à suivre le code source, je vais essayer cette semaine – Steven

+1

Je l'ai enfin travaillé sur v4.0.8, s'il vous plaît trouver des solutions dans EDIT, pas sûr que je fais le bonne chose, mais au moins cela fonctionne maintenant – Steven