Aller au contenu

Section Bibliothèques

La section Bibliothèques vous permet de développer une bibliothèque partagée en local et de la voir dans les micros qui la consomment, sans la publier dans un registre. Aseptic construit son artefact et le lie à chaque consommateur. Elle prend en charge les bibliothèques npm, Maven, Gradle et Python.

C’est une section avec un pattern liste + détail (comme Micros) : sur le côté, le catalogue de bibliothèques ; au centre, le détail éditable de celle sélectionnée.

Cela dépend de la technologie, car chaque écosystème résout ses dépendances à un endroit différent. Vous ne choisissez pas le mécanisme : Aseptic le déduit de ce qu’est la bibliothèque.

TechnologieOù atterrit l’artefactCe que délier défait
npmcopié sur le node_modules/<paquet> du consommateursupprime la copie et restaure le dossier d’origine
Maven et Gradlele dépôt local (~/.m2), d’où résolvent tous les consommateurssupprime cette version du dépôt local (Maven la retélécharge depuis le distant)
Pythonla roue (.whl), installée dans l’environnement virtuel de chaque consommateurla désinstalle et réinstalle la version qui s’y trouvait avant

Dans les trois cas c’est réversible : chaque lien laisse une marque, et délier ne défait que ce que Aseptic a posé. Un artefact déjà présent — une version téléchargée du registre — n’est jamais touché.

Depuis le bouton d’ajout (barre supérieure) —également proposé dans le fond vide de la section quand il n’y en a pas encore— :

  • Ajouter une bibliothèque — vous choisissez le dossier du dépôt. Dès que vous le faites, Aseptic vous montre ce qu’il a reconnu avant d’ajouter quoi que ce soit : la technologie, le nom du paquet, la version et quels micros du catalogue le déclarent déjà. Si le dossier n’est pas une bibliothèque qu’il sait construire, il le dit là et ne laisse pas continuer.
  • Importer depuis Git — clone le dépôt et l’ajoute. Ici il n’y a pas d’aperçu : il n’y a rien sur le disque à regarder tant que le clonage n’est pas fait.

La technologie se déduit du dépôt : pom.xml → Maven, build.gradle → Gradle, package.json avec name → npm, pyproject.toml/setup.py → Python. Le paquet est le nom tel que l’écrirait celui qui la consomme : le name du package.json, groupId:artifactId en JVM, le nom de distribution en Python.

Identité et recette de build. Elle s’enregistre toute seule (autosave avec un léger délai, comme dans Micros ; ça peut être désactivé dans Paramètres) :

  • Nom et Paquet.

  • Technologie — celle déduite à l’ajout. Vous pouvez la changer si elle s’est trompée.

  • Build — la commande qui construit l’artefact et le chemin de l’artefact. Si vous ne les déclarez pas, ceux du profil de sa technologie sont utilisés :

    TechnologieBuild par défautChemin de l’artefact
    npmnpm run builddist/<dernier segment du paquet>
    Maven${mvn} install -DskipTeststarget
    Gradle${gradle} publishToMavenLocal -x testbuild/libs
    Pythonpython -m build --wheeldist
  • Consommateurs — les micros qui utilisent la bibliothèque. Par défaut, ils sont détectés tout seuls en lisant qui déclare ce paquet (package.json, pom.xml, build.gradle, requirements.txt, pyproject.toml) ; vous pouvez les fixer à la main (ids de micros séparés par des virgules).

  • Surveiller les changements — reconstruit et relie automatiquement à chaque modification du code.

${mvn} et ${gradle} sont remplacés par l’exécutable du dépôt : son wrapper (mvnw, gradlew) s’il en fournit un, le global sinon. Ainsi la recette vaut pareil sur toutes les machines de l’équipe.

Par bibliothèque :

ActionCe qu’elle fait
InstallerInstalle les dépendances de la bibliothèque dans son dépôt (le build le fait tout seul si elles manquent).
ConstruireGénère l’artefact.
LierConstruit et pose l’artefact là où chaque consommateur le résout (voir le tableau ci-dessus).
DélierDéfait le lien chez chaque consommateur et restaure ce qu’il y avait avant.
SurveillerFait construire + lier à chaud à chaque changement. Nécessite le moteur actif.

L’état de chaque bibliothèque (construite / non construite, liée dans N consommateurs, en surveillance) est affiché dans la liste et dans le détail.

En surveillance, Aseptic ignore ce qu’écrit le build lui-même — node_modules, target, build/, l’environnement virtuel et les caches — pour ne pas entrer dans une boucle de reconstruction sans fin.

En JVM, l’artefact ne vit pas dans le dépôt du consommateur, mais dans votre dépôt local. Cela a deux conséquences :

  • Le lien vaut pour tous les micros à la fois, qu’ils soient ou non dans le scénario.
  • Si votre bibliothèque ne laisse pas résoudre sa version depuis le dépôt (un pom.xml qui en hérite via ${revision}, un group calculé dans un script Gradle), le lien vous le dira. Cela se règle en déclarant la version dans le YAML de la bibliothèque (stack.version).

Comme dans Micros, le détail d’une bibliothèque inclut son Git : changer de branche, faire fetch et pull (--ff-only). L’accès est en lecture seule (ne fait jamais de push), et s’il y a des changements non validés, Aseptic prévient avant de changer de branche ou de mettre à jour.

Si le dossier d’une bibliothèque a été déplacé, le détail le marque et propose de relocaliser : vous choisissez le nouveau dossier et le chemin est enregistré.

Aseptic ne modifie pas le dépôt du consommateur ni celui de la bibliothèque : il ne touche ni leur package.json, ni leur pom.xml, ni leur requirements.txt. Ce qu’il touche, c’est ce qui vit hors de Git — node_modules, le dépôt local, l’environnement virtuel — et toujours avec une marque pour pouvoir revenir en arrière.

En npm, une exception à connaître : un npm install chez le consommateur écrase son node_modules et emporte le lien avec lui. Aseptic le détecte et relie à la fin. Avec Maven et Gradle cela n’arrive pas, car l’artefact ne vit pas là.

Supprimer une bibliothèque du catalogue ne la délie pas : si elle était liée, déliez-la d’abord depuis le détail.

aseptic library detect/list/status/build/link/unlink/watch. Les lectures seules (library_detect, library_list, library_status) sont aussi disponibles comme outils du MCP.