Patrones de Consulta Maven POM
<when_to_use>
Active esta skill al consultar cualquier archivo pom.xml — extraer versiones de dependencias, filtrar por groupId o scope, mapear la jerarquía de módulos desde POMs padre, o detectar conflictos de versiones en un proyecto Java multimódulo.
</when_to_use>
Skill de dominio para consultar archivos XML de POM Maven usando dasel v3. Siempre pase -i xml explícitamente. El contenido de texto de elementos hijos (groupId, artifactId, version, scope) se accede directamente por el nombre del elemento — no se necesita #text. Escriba los resultados intermedios de lotes en /tmp/, nunca en el árbol fuente.
Extracción de Dependencias
# Todos los groupIds de dependencias de un solo POM
cat pom.xml | dasel -i xml 'project.dependencies.dependency.map(groupId)'
Filtrado por Versión de Framework
Filtre dependencias por groupId para aislar versiones específicas del framework.
# Versiones de dependencias Spring
cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(groupId == "org.springframework").map(version)'
# Versiones de dependencias Hibernate
cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(groupId == "org.hibernate").map(version)'
Filtrado por Scope
# ArtifactIds de dependencias con scope test
cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(scope == "test").map(artifactId)'
# Dependencias con scope compile (la ausencia del elemento scope equivale a compile)
cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(scope == "compile").map(artifactId)'
Jerarquía de Módulos
Extraiga las rutas de los módulos desde un POM padre para mapear la estructura del proyecto.
# Lista de módulos desde el POM padre
cat pom.xml | dasel -i xml 'project.modules.module'
Detección de Conflictos de Versiones Entre POMs
Patrón por lotes — itere sobre todos los POMs, extraiga dependencias por archivo, compare. Escriba los resultados en /tmp/.
# Recolectar todos los groupIds de dependencias de cada POM en la jerarquía
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
Inspeccione /tmp/all_deps.txt para encontrar el mismo groupId apareciendo con versiones diferentes entre módulos.
Extracción de Múltiples Campos
Extraiga groupId y artifactId juntos para un inventario de dependencias.
# Coordenadas de dependencia (groupId + artifactId) — ejecute como dos pasos
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
Los POMs empresariales usan dependencyManagement para declarar versiones controladas por BOM separadamente de las dependencies activas.
# Versiones de dependencias gestionadas (sección BOM)
cat pom.xml | dasel -i xml 'project.dependencyManagement.dependencies.dependency.map(version)'
# Versiones de dependencias activas (pueden estar vacías si la versión proviene del BOM)
cat pom.xml | dasel -i xml 'project.dependencies.dependency.map(version)'