O que Padrões de Consulta Maven POM faz?
<when_to_use>
Carregue esta habilidade ao consultar qualquer arquivo pom.xml — extraindo versões de dependências, filtrando por groupId ou escopo, mapeando hierarquia de módulos de POMs pai ou detectando conflitos de versão em um projeto Java multi-módulo.
</when_to_use>
Habilidade de domínio para consultar arquivos XML de POM Maven usando dasel v3. Sempre passe -i xml explicitamente. O conteúdo de texto de elementos filho (groupId, artifactId, version, scope) é acessado diretamente pelo nome do elemento — nenhum #text é necessário. Escreva resultados intermediários de lote em /tmp/, nunca na árvore de origem.
Extração de Dependências
# Todos os groupIds de dependências de um único POM
cat pom.xml | dasel -i xml 'project.dependencies.dependency.map(groupId)'
Filtragem por Versão de Framework
Filtrar dependências por groupId para isolar versões específicas de frameworks.
# Versões de dependências Spring
cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(groupId == "org.springframework").map(version)'
# Versões de dependências Hibernate
cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(groupId == "org.hibernate").map(version)'
Filtragem por Escopo
# ArtifactIds de dependências de escopo test
cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(scope == "test").map(artifactId)'
# Dependências de escopo compile (sem elemento scope, o padrão é compile)
cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(scope == "compile").map(artifactId)'
Hierarquia de Módulos
Extrair caminhos de módulos de um POM pai para mapear a estrutura do projeto.
# Lista de módulos do POM pai
cat pom.xml | dasel -i xml 'project.modules.module'
Detecção de Conflitos de Versão entre POMs
Padrão de lote — iterar todos os POMs, extrair dependências por arquivo, comparar. Gravar resultados em /tmp/.
# Coletar todos os groupIds de dependências de cada POM na hierarquia
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
Inspecione /tmp/all_deps.txt para o mesmo groupId aparecendo com versões diferentes entre módulos.
Extração de Múltiplos Campos
Extrair groupId e artifactId juntos para inventário de dependências.
# Coordenadas de dependência (groupId + artifactId) — execute em duas passagens
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
POMs corporativos usam dependencyManagement para declarar versões controladas por BOM separadamente das dependencies ativas.
# Versões de dependências gerenciadas (seção BOM)
cat pom.xml | dasel -i xml 'project.dependencyManagement.dependencies.dependency.map(version)'
# Versões de dependências ativas (podem estar vazias se a versão vier do BOM)
cat pom.xml | dasel -i xml 'project.dependencies.dependency.map(version)'