Générer un projet avec Maven
tosiam-project-generator-maven-plugin est le plugin Maven officiel pour démarrer un projet TOSIAM. Il génère l’arborescence complète d’un projet multi-module (personnalisations d’authentification, de dashboard et de code Java, plus une instance locale QuickStart) et pilote ensuite le cycle de vie de cette instance locale (démarrage, arrêt, redémarrage, suppression, build, administration ssoadm).
| groupId | org.tst.tosiam |
| artifactId | tosiam-project-generator-maven-plugin |
| goal-prefix | tosiam |
Tous les goals sont invocables directement, sans projet Maven préalable :
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:<version>:<goal> [options]
| Goal | Rôle |
|---|---|
generate | Génère l’arborescence complète d’un projet TOSIAM (bom, auth, account, custom-java, tosiam-quickstart) |
up | Build le projet, puis démarre l’instance TOSIAM locale |
down | Arrête l’instance TOSIAM locale |
restart | Build le projet, puis redémarre l’instance TOSIAM locale |
delete | Arrête l’instance et supprime ses données |
deploy | Build le projet, sans toucher au cycle de vie de l’instance TOSIAM locale |
ssoadm | Exécute une commande ssoadm sur l’instance locale |
- Java JDK 17 ou 21 minimum (
JAVA_HOMEdéfini) - Maven et Git installés et présents dans le
PATH - La variable d’environnement
GITHUB_TOKEN, positionnée avec un token disposant d’un accès en lecture aux dépôtstheopensourceitrust/tosiam,tosiam-authentication-uiettosiam-user-dashboard, requise pour le goalgenerate. Le nomGITHUB_TOKENn’est pas imposé par GitHub pour un usage en local : c’est simplement le nom attendu par le plugin, repris par convention du nom du secret que GitHub Actions injecte automatiquement dans ses runners. Il doit être défini manuellement (ex.export GITHUB_TOKEN=ghp_xxx), typiquement avec un Personal Access Token ayant le scoperepo(ouContents: Read-onlyen fine-grained token) sur les dépôts concernés.
Générer le projet — goal generate
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:3.36.0:generate \
-Dtosiam.version=3.36.0 \
[-DgroupId=org.tst.tosiam.example] \
[-DoutputDirectory=.]
| Propriété | Obligatoire | Défaut | Rôle |
|---|---|---|---|
tosiam.version | oui¹ | version du plugin invoqué | Version TOSIAM publiée à utiliser |
groupId | non | org.tst.tosiam.example | groupId Maven des modules générés (racine, bom, custom-java) |
outputDirectory | non | . | Répertoire de génération ; doit être vide ou inexistant |
¹ Le paramètre a bien une valeur par défaut déclarée (${plugin.version}, c’est-à-dire la version du plugin invoqué), mais cette expression Maven ne se résout que si le plugin est déclaré dans le pom.xml du répertoire courant. Or generate est justement destiné à démarrer un projet dans un répertoire vide, sans pom.xml préalable (Maven utilise alors un “standalone-pom” interne) : dans ce cas l’expression ne se résout pas et Maven échoue avec The parameters 'tosiamVersion' ... are missing or invalid. En pratique, -Dtosiam.version doit donc toujours être précisé lors d’un premier generate dans un répertoire vide.
Ce que fait le goal
Avant toute écriture, le plugin vérifie que tosiam.version correspond bien à une release existante du dépôt theopensourceitrust/tosiam. Si ce n’est pas le cas, il échoue avec la liste des versions publiées disponibles, sans avoir créé ni modifié quoi que ce soit.
Une fois la version validée :
git inità la racine du répertoire cible, puis génération d’un.gitignoreexcluant au minimumtosiam-quickstart/;auth/: clone detosiam-authentication-ui.git, positionné sur le tag<tosiam.version>;account/: clone detosiam-user-dashboard.git, positionné sur le tag<tosiam.version>;tosiam-quickstart/: téléchargement de l’archivetosiam-quickstart-<tosiam.version>.zip(via l’API GitHub) puis décompression.
Structure générée
projet/
├── .git/
├── .gitignore
├── pom.xml
├── bom/
├── auth/
├── account/
├── custom-java/
└── tosiam-quickstart/
pom.xml est le POM parent et agrégateur ; il référence les modules bom, auth, account et custom-java dans <modules>. tosiam-quickstart/ n’est pas un module Maven de ce parent : c’est uniquement l’environnement QuickStart (Tomcat, TOSDJ, script bin/), exclu du dépôt Git via le .gitignore généré. Les modules auth, account et tosiam-quickstart sont conservés dans leur état d’origine, sans aucune modification de contenu.
bom/—packaging=pom, centralise${tosiam.version}en propriété.custom-java/— projet Java standard destiné à vos développements spécifiques, dépendant deorg.tst.tosiam:tosiam-server-lib:${tosiam.version}. Sonpom.xmlcopie automatiquement, à chaque build (phasepackage,maven-resources-plugin), le jar produit verstosiam-quickstart/apache-tomcat-11.0.14/webapps/tosiam/WEB-INF/lib/— donc aussi lors du build automatique déclenché parup,restartetdeploy.
groupId des modules générés est personnalisable (-DgroupId). L’artifactId et le nom de chaque module (racine root, bom, custom-java) sont fixes.Piloter l’instance locale — goals up / down / restart / delete
Ces goals pilotent le cycle de vie de l’instance TOSIAM locale d’un projet déjà généré, en invoquant le script tosiam-quickstart/bin/tosiam.sh (sélection automatique de tosiam.bat sous Windows) :
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:3.36.0:up
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:3.36.0:down
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:3.36.0:restart
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:3.36.0:delete
| Propriété | Obligatoire | Défaut | Rôle |
|---|---|---|---|
projectDirectory | non | . | Racine du projet généré (répertoire contenant tosiam-quickstart) |
| Goal | Action | Effet |
|---|---|---|
up | démarrage | Build le projet, puis démarre Tomcat et attend sa disponibilité |
down | arrêt | Arrête Tomcat proprement |
restart | redémarrage | Build le projet, puis enchaîne arrêt et démarrage |
delete | suppression | Arrête l’instance puis supprime les données (tosiam-quickstart/data) |
La variable d’environnement TOSIAM_HOME est positionnée automatiquement sur <projectDirectory>/tosiam-quickstart ; un code retour non nul du script fait échouer le goal Maven.
Build automatique (up, restart, deploy)
Avant de démarrer ou redémarrer l’instance, les goals up et restart (et deploy, qui ne fait que ça) buildent l’intégralité du projet généré :
- positionnement de
TOSIAM_AUTHENTIFICATION(.../tosiam-quickstart/apache-tomcat-11.0.14/webapps/tosiam/auth) etTOSIAM_DASHBOARD(.../account), lues par les builds webpack des modulesauthetaccountpour déterminer leur répertoire de sortie ; - exécution de
mvn clean installà la racine du projet généré ; - copie automatique du jar
custom-javadansWEB-INF/lib(voir ci-dessus).
Si ce build échoue, le goal Maven échoue immédiatement et tosiam.sh n’est pas invoqué.
Redéployer sans redémarrer — goal deploy
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:3.36.0:deploy
Effectue exactement le build décrit ci-dessus, sans invoquer tosiam.sh : le cycle de vie de l’instance locale (démarrée ou non) n’est pas modifié. Utile pour re-builder/redéployer auth, account et custom-java sans redémarrer l’instance.
Administrer l’instance — goal ssoadm
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:3.36.0:ssoadm \
-Dssoadm.args="create-realm --realm /myrealm"
| Propriété | Obligatoire | Défaut | Rôle |
|---|---|---|---|
projectDirectory | non | . | Racine du projet généré |
ssoadm.args | oui | — | Commande ssoadm à exécuter, sous forme d’une seule chaîne |
La ligne de commande Maven ne permettant pas de passer des arguments positionnels libres à un goal, ssoadm.args est retokenisée en arguments séparés sur les espaces, en respectant les guillemets simples et doubles — ce qui permet de passer des valeurs contenant des espaces :
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:3.36.0:ssoadm \
-Dssoadm.args="update-realm --realm /myrealm --attributevalues description='Mon Royaume'"
Ce goal n’effectue aucun build préalable : il suppose une instance déjà démarrée (up exécuté au préalable). Voir la page CLI ssoadm pour la référence complète des commandes disponibles.
Gestion des erreurs
Le plugin échoue avec un message explicite (en français) dans les cas courants suivants :
- variable
GITHUB_TOKENabsente/vide, ou versiontosiam.versioninexistante sur GitHub (liste des versions disponibles fournie dans le message) — goalgenerate; - répertoire cible de
generatedéjà existant et non vide ; - répertoire
tosiam-quickstartou scripttosiam.sh/ssoadm.shintrouvable — invitation à exécuter d’abordgenerate, ou à vérifierprojectDirectory; - build Maven préalable en échec — goals
up/restart/deploy; - propriété
ssoadm.argsabsente ou vide — goalssoadm.
Exemple complet
export GITHUB_TOKEN=ghp_xxx
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:3.36.0:generate \
-DoutputDirectory=mon-projet-tosiam
cd mon-projet-tosiam
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:3.36.0:up
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:3.36.0:ssoadm \
-Dssoadm.args="create-realm --realm /myrealm"
mvn org.tst.tosiam:tosiam-project-generator-maven-plugin:3.36.0:down