l'URL "Repository Path" du référentiel de groupe nouvellement
Ce gabarit est un modèle de projet Gradle pour la construction d'une application Adélia Message Broker Subscriber Service sous la forme d'un fichier au format ZIP et/ou TAR (format d'archive Unix).
Cette construction peut prendre en compte les objets Adélia des programmes EADELIA nécessaires à l'exécution des souscripteurs Adélia.
Création d'un projet Adélia AMBSS build
La création du projet s'obtient en décompressant le fichier %ADELIWS%\Build\templates\ambss application.zip : le répertoire "ambss application" obtenu peut être déplacé et renommé à volonté.
Le poste de construction de l'application Adélia AMBSS et le poste de build Adélia peuvent être deux postes différents.
Configuration d'un projet Adélia AMBSS build
Après avoir créé un projet, il est nécessaire de le configurer avant de pouvoir l'exécuter. La configuration et l'initialisation d'un projet de build se basent sur les paramètres renseignés dans le fichier gradle.properties, à savoir :
Paramètres généraux
adeliaVersion (obligatoire)
Chaîne alphanumérique représentant le numéro de version du runtime Adélia inclus dans le ZIP/TAR de l'application Adélia AMBSS.
Cette version de runtime doit être supérieure ou égale à celle utilisée par le poste de build Adélia pour générer les artéfacts.
version (obligatoire)
Chaîne alphanumérique représentant le numéro de version de l'application. Chaque artéfact construit aura le même numéro de version. On distingue plusieurs types de version :
Les versions release (ou finales) représentant les versions officielles de l'application (ex : 1.0.0).
Les versions snapshot (ou instantanées) représentant les versions en cours de développement de l'application (ex : 1.0.1-SNAPSHOT).
Les versions pré-release (ou release-candidate) représentant les versions candidates à être les versions finales (ex : 1.0.1-RC01).
group (obligatoire)
Chaîne alphanumérique représentant l'identifiant du groupe ou de l'organisation à l'origine du projet. La valeur suit les mêmes règles de nommage que les packages Java (exemple : com.hardis), et on choisit généralement comme valeur le nom du top package du projet.
Paramètres de l'application AMBSS
ambssAppName (optionnel)
Chaîne alphanumérique représentant le nom du fichier ZIP/TAR produit. Par défaut, ce fichier a pour nom <nom du répertoire du projet>-<valeur du paramètre version>.<zip/tar>.
Si ce paramètre est renseigné alors le fichier aura pour nom <valeur du paramètre ambssAppName>-<valeur du paramètre version>.<zip/tar>.
Remarque :
Si l'artéfact produit à l'exécution de ce build doit être publié dans un référentiel (à l'aide des tâches de publication publishXXX), la valeur de ce paramètre ne doit pas contenir de caractères espace.
addApplicationYamlFiles (optionnel)
Ajoute les fichiers de paramétrage Spring boot YAML src/main/ambss/config/application.yml et src/main/ambss/config/application-dev.yml à l'application. Ces fichiers se retrouveront dans le sous-répertoire config de l'archive construite. Ce paramètre a une valeur alphanumérique "Y" (ajout des fichiers) ou "N" (pas d'ajout de fichiers). Par défaut, ce paramètre vaut "Y".
addSubscribersConfigurationYamlFile (optionnel)
Ajoute le fichier src/main/ambss/extdConfig/subscribersConf.yml à l'application. Ce fichier se retrouvera dans le sous-répertoire extdConfig de l'archive construite. Ce paramètre a une valeur alphanumérique "Y" (ajout du fichier) ou "N" (pas d'ajout de fichier). Par défaut, ce paramètre vaut "Y".
nonEmbeddedAdeliaPgmsCompo.defaultDir (optionnel)
Sous-répertoire par défaut de stockage des artéfacts d'objets Adélia (issus d'un build Adélia de programmes EADELIA, VA_B, classes Adélia) définis par une dépendance Gradle de type nonEmbeddedAdeliaPgmsCompo. Le sous-épertoire est relatif à la racine de l'archive construite. Ce paramètre a une valeur alphanumérique. Par défaut, ce paramètre vaut "lib".
nonEmbeddedAdeliaPgmsClass.defaultDir (optionnel)
Sous-répertoire par défaut de stockage des objets Adélia (issus d'une génération de programmes EADELIA, VA_B, classes Adélia) définis par une dépendance Gradle de type nonEmbeddedAdeliaPgmsClass (cette dépendance permet de définir un répertoire source). Le sous-répertoire est relatif à la racine de l'archive construite. Ce paramètre a une valeur alphanumérique. Par défaut, ce paramètre vaut "class".
ambssBrokers (obligatoire)
Liste des courtiers ciblés.
Paramètres des gestionnaires de référentiels
L'utilisation des référentiels d'artéfacts lors de l'exécution d'un build Adélia AMBSS se fait lors des phases suivantes :
Dans la phase de création du fichier ZIP/TAR, le build utilise un référentiel pour télécharger (référentiel de download) les artéfacts nécessaires à la construction de l'artéfact de l'application AMBSS. Ces artéfacts sont :
les artéfacts du runtime Adélia nécessaires à l'exécution d'une application Adélia AMBSS,
vos propres artéfacts d'objets Adélia composant l'application AMBSS : ceux-ci sont issus de l'exécution d'un projet Adélia build.
Dans la phase finale de stockage de l'artéfact construit, il est possible de définir un référentiel pour transférer (référentiel d'upload) cet artéfact versionné. En fonction du type de version (release ou snapshot), il est possible de définir le référentiel associé.
downloadArtifactsReleaseRepo (obligatoire)
URL d'accès au référentiel de download des artéfacts dépendants nécessaires au build. Ce référentiel doit permettre d'accéder :
aux artéfacts du référentiel Hardis (runtime Adélia AMBSS),
à vos propres artéfacts d'objets Adélia composant votre application AMBSS. Ces artéfacts sont ceux en version release si vous buildez votre application AMBSS en version release.
Par défaut, et uniquement à titre d'exemple, la valeur de ce paramètre est l'URL du référentiel fourni par Hardis.
A la place, dans votre Nexus, il faut créer votre propre référentiel privé pour qu'il soit un regroupement du référentiel Hardis et de votre référentiel privé en version release. En fonction de votre propre configuration du Nexus utilisé pour vos projets Adélia build, il s'agit soit du référentiel créé par défaut par Nexus et nommé "Releases", soit un autre référentiel "hosted repository" ayant une "Repository policy" à Release et créé par vos soins).
Pour cela, après connexion à votre Nexus, à partir de la vue "Repositories", il faut ajouter un nouveau référentiel défini comme groupe des référentiels décrits plus haut :
- Ouvrez la fenêtre de définition d'un référentiel via la commande "Add repository group",
- A partir de la section "Available Repositories", ajoutez, dans la section "Ordered Group Repositories", le référentiel privé qui est proxy du référentiel Hardis, ainsi que le référentiel privé "hosted" qui sert de stockage à vos artéfacts en version release.
Pour finir, remplacez la valeur du paramètre downloadArtifcatsReleaseRepo par l'URL "Repository Path" du référentiel de groupe nouvellement créé.
downloadArtifactsReleaseRepo.username / downloadArtifactsReleaseRepo.password (optionnels)
Définit le profil utilisateur et le mot de passe utilisés pour la connexion au référentiel de download.
Par défaut et à titre d'exemple, ces identifiants sont ceux du référentiel de download Hardis, mais il faut les remplacer par ceux de votre propre référentiel privé de groupe (cf. "downloadArtifactsReleaseRepo" ci-dessus). Comme on accède à ce référentiel en lecture seule, Nexus autorise une connexion anonyme : dans ce cas, laissez les champs "username" et "password" non renseignés.
downloadArtifactsSnapshotRepo (optionnel)
URL d'accès au référentiel de download des artéfacts dépendants nécessaires au build. Ce référentiel doit permettre d'accéder :
aux artéfacts du référentiel Hardis (runtime Adélia AMBSS). Ces artéfacts ne sont disponibles qu'en version release,
à vos propres artéfacts d'objets Adélia composant votre application AMBSS. Ces artéfacts sont ceux de la version snapshot si vous construisez votre application AMBSS en version snapshot.
Dans votre Nexus, il faut créer votre propre référentiel privé pour qu'il soit un regroupement du référentiel Hardis et de votre référentiel privé en version snapshot. En fonction de votre propre configuration du Nexus utilisé pour vos projets Adélia build, il s'agit soit du référentiel créé par défaut par Nexus et nommé "Snapshots", soit un autre référentiel "hosted repository" ayant une "Repository policy" à Snapshot et créé par vos soins).
Pour cela, après connexion à votre Nexus, à partir de la vue "Repositories", il faut ajouter un nouveau référentiel défini comme groupe des référentiels décrits plus haut :
Ouvrez la fenêtre de définition d'un référentiel via la commande "Add repository group",
A partir de la section "Available Repositories", ajoutez dans la section "Ordered Group Repositories" le référentiel privé qui est proxy du référentiel Hardis ainsi que le référentiel privé "hosted" qui sert de stockage à vos artéfacts en version snapshot.
Pour finir, remplacez la valeur du paramètre downloadArtifcatsSnapshotRepo par l'URL "Repository Path" du référentiel de groupe nouvellement créé.
downloadArtifactsSnapshotRepo.username / downloadArtifactsSnapshotRepo.password (optionnels)
Définit le profil utilisateur et le mot de passe utilisés pour la connexion au référentiel de download. Ce profil doit permettre d'accéder à votre propre référentiel privé de groupe (cf. "downloadArtifactsSnapshotRepo" ci-dessus). Comme ce référentiel est accédé en lecture seule, Nexus autorise une connexion anonyme : dans ce cas, laissez les champs "username" et "password" non renseignés.
uploadArchivesReleaseRepo (optionnel)
URL d'accès au référentiel d'upload utilisé pour le stockage de l'artéfact ZIP/TAR construit avec une version release. Ce référentiel permettra de mettre à disposition les artéfacts en version finale.
uploadArchivesReleaseRepo.username / uploadArchivesReleaseRepo.password (optionnels)
Définit le profil utilisateur et le mot de passe utilisés pour la connexion au référentiel d'upload des artéfacts en version release.
uploadArchivesSnapshotRepo (optionnel)
URL d'accès au référentiel d'upload utilisé pour le stockage de l'artéfact ZIP/TAR construit avec une version snapshot. Ce référentiel permettra de mettre à disposition les artéfacts en cours de développement.
uploadArchivesReleaseRepo.username / uploadArchivesReleaseRepo.password (optionnels)
Définit le profil utilisateur et le mot de passe utilisés pour la connexion au référentiel d'upload des artéfacts en version snapshot.
Configuration des composants de l'application Adelia AMBSS à builder
Ces composants sont les artéfacts d'objets Adélia issus de l'exécution d'un projet Adélia build, soit les objets Adélia issus d'une génération interactive.
Il est nécessaire de les déclarer dans le projet Adélia AMBSS build pour qu'ils soient ajoutés dans le ZIP/TAR produit.
Pour cela :
ouvrez le fichier build.gradle avec un éditeur texte, puis,
dans la section "dependencies" (Declare your artifacts needed to build the AMBSS application here), déclarez vos artéfacts.
Artéfacts embarqués
Un artéfact embarqué est directement inclus dans le binaire de l'application AMBSS construite (fichier JAR bin/ambss-XXX-exec.jar dans l'archive produite).
Ces artéfacts doivent être déclarés en insérant l'instruction suivante :
embeddedAdeliaPgmsCompo group: '<nom du groupe de l'artéfact>', name : '<nom du fichier de l'artéfact sans la version>', version: '<numéro de version de l'artéfact>'
Exemple de déclaration d'artéfact issu d'un build par domaine :
Pour l'artéfact de type Event dont le nom de fichier est myapp-app_area_1_event-1.1.0-SNAPSHOT.jar, il faut saisir embeddedAdeliaPgmsCompo group:'my.company', name : 'myapp-app_area_1_event', version: '1.1.0-SNAPSHOT'.
La valeur de group est celle du paramètre "group" dans le fichier gradle.properties du projet Adélia build ayant construit l'artéfact.
Exemple de déclaration d'artéfact issu d'un build par composant :
Pour l'artéfact de type Event dont le nom de fichier est prefix_compo_1_event-1.1.0-SNAPSHOT.jar, il faut saisir embeddedAdeliaPgmsCompo group:'my.company', name : 'prefix_compo_1_event', version: '1.1.0-SNAPSHOT'.
La valeur de group est celle du paramètre "groupId" du composant dont est issu l'artéfact.
Artéfacts non embarqués
Un artéfact non embarqué est inclus dans un sous-répertoire de l'archive produite (le sous-répertoire par défaut est la valeur de la propriété nonEmbeddedAdeliaPgmsCompo.defaultDir, soit "lib" si elle n'est pas renseignée).
Ces artéfacts doivent être déclarés en insérant l'instruction suivante :
nonEmbeddedAdeliaPgmsCompo group: '<nom du groupe de l'artéfact>', name : '<nom du fichier de l'artéfact sans la version>', version: '<numéro de version de l'artéfact>'
Il est possible de forcer un sous-répertoire de destination des artéfacts déclarés en insérant l'instruction suivante :
nonEmbeddedAdeliaPgmsCompo (group: '<nom du groupe de l'artéfact>', name : '<nom du fichier de l'artéfact sans la version>', version: '<numéro de version de l'artéfact>') {
ext.destinationDir = 'mySubDirForJar'
}
Exemple de déclaration d'artéfact issu d'un build par domaine :
Pour l'artéfact de type Event dont le nom de fichier est myapp-app_area_1_event-1.1.0-SNAPSHOT.jar, il faut saisir nonEmbeddedAdeliaPgmsCompo group:'my.company', name : 'myapp-app_area_1_event', version: '1.1.0-SNAPSHOT'.
La valeur de group est celle du paramètre "group" dans le fichier gradle.properties du projet Adélia build ayant construit l'artéfact.
Exemple de déclaration d'artéfact issu d'un build par composant à destination du sous-répertoire 'adeliaCompo' :
Pour l'artéfact de type Event dont le nom de fichier est prefix_compo_1_event-1.1.0-SNAPSHOT.jar, il faut saisir :
nonEmbeddedAdeliaPgmsCompo (group:'my.company', name : 'prefix_compo_1_event', version: '1.1.0-SNAPSHOT') {
ext.destinationDir = 'adeliaCompo'
}
La valeur de group est celle du paramètre "groupId" du composant dont est issu l'artéfact.
Objets Adélia
Pour packager les objets Adélia issus d'une génération intéractive dans l'archive construite, il faut insérer l'instruction suivante :
nonEmbeddedAdeliaPgmsClass fileTree('<Chemin de génération des objets Adélia>')
Le chemin peut être absolu (ex: 'C:/my/java/classes/generation/directory') ou relatif par rapport au répertoire du projet de build gradle (ex: './my/java/classes/generation/subDirectory') .
L'ensemble des objets contenus dans ce répertoire (ainsi que les sous-répertoires) seront copiés dans un sous-répertoire de l'archive produite (le sous-répertoire par défaut est la valeur de la propriété nonEmbeddedAdeliaPgmsClass.defaultDir, soit "class" si elle n'est pas renseignée).
Il est possible de forcer un sous-répertoire de destination des objets déclarés en insérant l'instruction suivante :
nonEmbeddedAdeliaPgmsClass (fileTree('<Chemin de génération des objets Adélia>')) {
ext.destinationDir = 'mySubDirForClasses'
}
Fichiers de paramétrage de l'application Adélia AMBSS à builder
Par défaut, un certain nombre de fichiers de configuration sont livrés avec ce gabarit. Ces fichiers sont décrits dans le tableau suivant :
Nom du fichier |
Chemin dans l'archive construite |
Chemin dans le projet Adelia AMBSS build |
Commentaire |
application.yml | <ZIP/TAR>\config\application.yml | <projet AMBSS build>\src\main\ambss\config\application.yml | Suivant la valeur de la propriété addApplicationYamlFiles |
application-dev.yml | <ZIP/TAR>\config\application-dev.yml | <projet AMBSS build>\src\main\ambss\config\application-dev.yml | Suivant la valeur de la propriété addApplicationYamlFiles |
beans-context.xml | <ZIP/TAR>\extdConfig\beans-context.xml | <projet AMBSS build>\src\main\ambss\extdConfig\beans-context.xml | |
subscribersConf.yml | <ZIP/TAR>\extdConfig\subscribersConf.yml | <projet AMBSS build>\src\main\ambss\extdConfig\subscribersConf.yml | Suivant la valeur de la propriété addSubscribersConfigurationYamlFile |
CfgConfiguration.properties |
<ZIP/TAR>\extdConfig\CfgConfiguration.properties |
<projet AMBSS build>\src\main\ambss\extdConfig\CfgConfiguration.properties |
|
wagon.key |
<ZIP/TAR>\extdConfig\wagon.key |
<projet AMBSS build>\src\main\ambss\extdConfig\wagon.key |
|
wagon.xml |
<ZIP/TAR>\extdConfig\wagon.xml |
<projet AMBSS build>\src\main\ambss\extdConfig\wagon.xml |
|
wicfgvla.ini |
<ZIP/TAR>\extdConfig\wicfgvla.ini |
<projet AMBSS build>\src\main\ambss\extdConfig\wicfgvla.ini |
|
Pool.properties | <ZIP/TAR>\extdConfig\Pool.properties | <projet AMBSS build>\src\main\ambss\extdConfig\Pool.properties | En plus de ce fichier de configuration par défaut, il est possible d'ajouter ses propres fichiers de pool nommés poolSession_<nomPool>.properties |
↑ Haut de page
Exécution d'un projet Adelia AMBSS build
Liste des tâches Gradle du build Adélia AMBSS
build
Tâche de construction des artéfacts ZIP et TAR. Ceux-ci sont placés dans le sous-répertoire build\distributions du projet de build.
distZip
Tâche de construction de l'artéfact ZIP uniquement. Celui-ci est placé dans le sous-répertoire build\distributions du projet de build.
distTar
Tâche de construction de l'artéfact TAR uniquement. Celui-ci est placé dans le sous-répertoire build\distributions du projet de build.
clean
Tâche permettant de supprimer les objets créés lors de l'exécution de la tâche build (le sous-répertoire build est supprimé).
publish
Cette tâche permet de transférer le(s) artéfact(s) construit(s) dans le référentiel d'upload.
Il est nécessaire de renseigner la clé uploadArchivesReleaseRepo ou uploadArchivesSnapshotRepo en fonction du type de version de l'artéfact.
Remarque :
Cette tâche peut provoquer une erreur si la propriété ambssAppName est renseignée et contient des caractères espace ou si celle-ci n'est pas renseignée mais que le nom du répertoire du projet ("ambss application" par défaut) contient des caractères espace.
publishToMavenLocal
Cette tâche permet de transférer le(s) artéfact(s) construit(s) dans le référentiel local Maven de la machine (répertoire %USERPROFILE%\.m2).
Remarque :
Cette tâche peut provoquer une erreur si la propriété ambssAppName est renseignée et contient des caractères espace ou si celle-ci n'est pas renseignée mais que le nom du répertoire du projet ("ambss application" par défaut) contient des caractères espace. ↑ Haut de page
Structure de l'archive produite
Les deux archives personnalisées ZIP et TAR ont la même structure, qui est le suivant :
- Répertoire bin : contient les scripts pour lancer l'application,
- Répertoire config : contient les fichiers de configuration application.yml et application-dev.yml permettant d'externaliser la configuration de l'application Spring Boot Adelia Message Broker Subscriber Service (niveau de log, port d'écoute, etc.) ainsi que la configuration du runtime de l'AMBSS,
Répertoire extdConfig : contient les fichiers de configuration du runtime Adélia (wagon.xml, wagon.key, CfgConfiguration.properties, wicfgvla.ini, Pool.properties et éventuels poolSession_<nomPool>.properties).
Il contient également le fichier bean-context.xml qui permet de personnaliser la désérialisation JSON et le fichier de configuration des souscripteurs Adélia subscribersConf.yml,
- Répertoire b : contient le binaire de l'application, à savoir ambss-XXX-exec.jar.
De plus, en fonction de la configuration des dépendances, l'archive peut contenir des sous-répertoires contenant les binaires des programmes Adélia à exécuter (par défaut les répertoires "lib" et "class").
Scripts de démarrage
Contrairement à une distribution standard (disponible dans le répertoire %ADELIWS%\distrib\AdeliaBrokerSubscribersService), les scripts de démarrage dans le sous-répertoire "bin" ambss.<bat/sh> et ambss-dev.<bat/sh> ont été personnalisés :
- l'option -Dloader.path= a été fixée avec les valeurs des sous-répertoires associés aux dépendances (d'objets Adélia) définies dans le fichier build.gradle,
- l'option –ambss.subscribers.configuration= a été fixée avec le chemin du fichier subscribersConf.yml si la propriété addSubscribersConfigurationYamlFile a été fixée à "Y".
Il n'est donc pas nécessaire d'appeler ces options dans la ligne de commande de ces scripts. ↑ Haut de page