Pour mes travaux sur et avec Syncope j'utilise systématiquement la génération Maven archétypique qui permet d'avoir une version de référence (4.1.0-M0) et aussi de reconstruire une instances avec des travaux spécifiques.
mvn archetype:generate -DarchetypeGroupId=org.apache.syncope -DarchetypeArtifactId=syncope-archetype -DarchetypeRepository=https://repo1.maven.org/maven2 -DarchetypeVersion=4.1.0-M0
Dans un répertoire dédié, utiliser la ligne de commande précédente pour avoir un déploiement de Syncope 4.10-M0 ou tout autre version.
En fonction de l'artefact de votre projet, vous trouverez les composants de base dans leur répertoire et fit qui contient le projet qui va permettre de faire l'intégration de vos développements. Tout ça est bien documenté sous ce lien.
Vous avez 2 possibilités de faire tourner Syncope:
Mode Embedded
Mode docker
Dans le mode Embedded vous aurez une version qui tourne sous Tomcat avec une configuration déjà très complexe. Ou alors le mode docker qui containerise Syncope dans un mode docker-compose (via le plugin io.fabric) avec une configuration pratiquement vierge.
Je trouve ce dernier mode plus pratique pour des essais car il isole bien les différents composants de la solution tout en proposant une solution rapidement opérationnelle.
Avec la version 18 de PostGreSQL il faudra adapter le volume de partage de la base pour /var/lib/postgresql tout simplement. Il faudra aussi exposer des ports pour atteindre les deux principaux composants syncope-console et syncope-users.
Il faut rajouter la variable d'environnement -Dsyncope.connid.location=file:/opt/syncope/bundles sur le core sans quoi il ne trouve pas la source des bundles.
Pour le chargement des configurations spécifiques je privilégie les API. Mais pour recharger des configurations de base, précédemment sauvées, on peut utiliser l'import de fichiers xml. Attention de bien nettoyer les tokens des comptes.
Si vous introduisez des composants Java, ils doivent être dans le package org/apache/syncope/core du module core pour être pris en compte.
Pour arrêter les containers utilisez les deux commandes:
docker stop $(docker ps -q)
docker rm $(docker ps -a -q)