用途:在查询任意 pom.xml 时加载此技能,用于提取依赖版本、按 groupId 或 scope 过滤、从父 POM 映射模块层级,或检测多模块 Java 项目中的版本冲突。
主要能力:基于 dasel v3 查询 Maven POM XML。使用时必须显式传入 -i xml。子元素文本内容(groupId、artifactId、version、scope)直接按元素名访问,无需 #text。中间批量结果写入 /tmp/,不要写入源码树。
常用查询:提取单个 POM 的全部依赖 groupId:cat pom.xml | dasel -i xml 'project.dependencies.dependency.map(groupId)'。按 groupId 过滤框架版本,例如 Spring:cat pom.xml | dasel -i xml 'project.dependencies.dependency.filter(groupId == "org.springframework").map(version)';Hibernate 同理替换 groupId。按 scope 过滤:test 范围取 artifactId 用 filter(scope == "test").map(artifactId);compile 范围同理(无 scope 元素默认 compile)。模块层级:cat pom.xml | dasel -i xml 'project.modules.module'。
跨 POM 版本冲突检测:遍历所有 POM,逐文件提取依赖后比较,结果写入 /tmp/。示例: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,然后检查 /tmp/all_deps.txt 中同一 groupId 是否在不同模块出现不同版本。
多字段提取:groupId 与 artifactId 需分两次运行。dependencyManagement 与 dependencies 区分:BOM 受管版本用 project.dependencyManagement.dependencies.dependency.map(version);活动依赖版本用 project.dependencies.dependency.map(version),若版本来自 BOM 可能为空。
限制:资料未提供安装方式、dasel 版本要求、错误处理细节及平台差异,暂未提供。