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
Votre 2ème question est assez difficile de répondre sans détails. Habituellement, il est préférable de partager des questions. –
'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' –
@ 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