pomanalyzer
Version:
pomanalyzer is a utility to analyze Apache Maven POM XML file
61 lines (54 loc) • 2.26 kB
JavaScript
// src/services/dependencyService.js
import { readFile } from '../utils/fileUtils.js';
import { parseXml } from '../utils/xmlParser.js';
import { resolveVersion } from '../utils/dependencyResolver.js';
/**
* Reads and parses a Maven pom.xml file.
* @param {string} filePath - The path to the pom.xml file.
* @returns {Promise<Array>} - A promise that resolves to an array of dependencies.
*/
export async function readPomXml(filePath) {
try {
const xmlContent = await readFile(filePath);
const result = await parseXml(xmlContent); // Use await here
const dependencies = extractDependencies(result);
return dependencies;
} catch (error) {
throw new Error(`Error reading pom.xml: ${error.message}`);
}
}
/**
* Extracts dependencies from the parsed XML result.
* @param {Object} result - The parsed XML result.
* @returns {Array} - An array of dependencies.
*/
function extractDependencies(result) {
const dependencies = [];
if (!result || !result.project) {
return dependencies;
}
const properties = result.project.properties ? result.project.properties[0] : {};
if (result.project.dependencies && result.project.dependencies[0] && result.project.dependencies[0].dependency) {
dependencies.push(
...result.project.dependencies[0].dependency.map((dep) => ({
groupId: dep.groupId ? dep.groupId[0] : 'unknown',
artifactId: dep.artifactId ? dep.artifactId[0] : 'unknown',
version: resolveVersion(dep.version && dep.version[0] ? dep.version[0] : 'N/A', properties),
}))
);
}
if (result.project.dependencyManagement &&
result.project.dependencyManagement[0] &&
result.project.dependencyManagement[0].dependencies &&
result.project.dependencyManagement[0].dependencies[0] &&
result.project.dependencyManagement[0].dependencies[0].dependency) {
dependencies.push(
...result.project.dependencyManagement[0].dependencies[0].dependency.map((dep) => ({
groupId: dep.groupId ? dep.groupId[0] : 'unknown',
artifactId: dep.artifactId ? dep.artifactId[0] : 'unknown',
version: resolveVersion(dep.version && dep.version[0] ? dep.version[0] : 'N/A', properties),
}))
);
}
return dependencies;
}