Motifs de Requête POM Maven
<when_to_use>
Chargez cette compétence lorsque vous interrogez un fichier pom.xml — extraction des versions de dépendances, filtrage par groupId ou scope, cartographie de la hiérarchie des modules à partir des POM parents, ou détection de conflits de versions dans un projet Java multi-modules.
</when_to_use>
Compétence domaine pour interroger les fichiers POM XML Maven en utilisant dasel v3. Passez toujours -i xml explicitement. Le contenu textuel des éléments enfants (groupId, artifactId, version, scope) est accessible directement par le nom de l'élément — pas besoin de #text. Écrivez les résultats intermédiaires par lots dans /tmp/, jamais dans l'arborescence source.
Extraction de Dépendances
# Tous les groupId de dépendances d'un seul POM
cat pom.xml | dasel -i xml 'project.dependencies.dependency.map(groupId)'
Filtrage par Version de Framework
Filtrez les dépendances par groupId pour isoler les versions spécifiques à un framework.
# Versions des dépendances Spring
cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(groupId == "org.springframework").map(version)'
# Versions des dépendances Hibernate
cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(groupId == "org.hibernate").map(version)'
Filtrage par Scope
# ArtifactIds des dépendances de scope test
cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(scope == "test").map(artifactId)'
# Dépendances de scope compile (pas d'élément scope → valeur par défaut compile)
cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(scope == "compile").map(artifactId)'
Hiérarchie des Modules
Extrayez les chemins des modules d'un POM parent pour cartographier la structure du projet.
# Liste des modules depuis le POM parent
cat pom.xml | dasel -i xml 'project.modules.module'
Détection de Conflits de Versions entre POMs
Motif par lots — parcourir tous les POMs, extraire les dépendances par fichier, comparer. Écrire les résultats dans /tmp/.
# Collecter tous les groupId de dépendances de chaque POM de la hiérarchie
for pom in $(fdfind -e xml -n pom.xml .); do
echo "=== $pom ===" >> /tmp/all_deps.txt
cat "$pom" | dasel -i xml 'project.dependencies.dependency.map(groupId)' >> /tmp/all_deps.txt 2>/dev/null
done
Inspectez /tmp/all_deps.txt pour trouver le même groupId apparaissant avec des versions différentes d'un module à l'autre.
Extraction Multi-Champs
Extrayez groupId et artifactId ensemble pour un inventaire des dépendances.
# Coordonnées des dépendances (groupId + artifactId) — effectuer deux passes
cat pom.xml | dasel -i xml 'project.dependencies.dependency.map(groupId)'
cat pom.xml | dasel -i xml 'project.dependencies.dependency.map(artifactId)'
DependencyManagement vs Dependencies
Les POMs d'entreprise utilisent dependencyManagement pour déclarer les versions contrôlées par un BOM séparément des dependencies actives.
# Versions gérées des dépendances (section BOM)
cat pom.xml | dasel -i xml 'project.dependencyManagement.dependencies.dependency.map(version)'
# Versions actives des dépendances (peuvent être vides si la version provient du BOM)
cat pom.xml | dasel -i xml 'project.dependencies.dependency.map(version)'