diff --git a/lib/updaters/types/maven.js b/lib/updaters/types/maven.js
index 37d81c5be..b0b28d5e7 100644
--- a/lib/updaters/types/maven.js
+++ b/lib/updaters/types/maven.js
@@ -1,40 +1,39 @@
-const jsdom = require('jsdom');
-const serialize = require('w3c-xmlserializer');
const detectNewline = require('detect-newline');
+const { XMLParser, XMLBuilder } = require('fast-xml-parser');
+
const CRLF = '\r\n';
const LF = '\n';
function pomDocument(contents) {
- const dom = new jsdom.JSDOM('');
- const parser = new dom.window.DOMParser();
- return parser.parseFromString(contents, 'application/xml');
+ const parser = new XMLParser();
+ return parser.parse(contents);
}
-function pomVersionElement(document) {
- const versionElement = document.querySelector('project > version');
+function pomVersion(document) {
+ const version = document?.project?.version;
- if (!versionElement) {
+ if (!version) {
throw new Error(
'Failed to read the version field in your pom file - is it present?',
);
}
- return versionElement;
+ return version;
}
module.exports.readVersion = function (contents) {
const document = pomDocument(contents);
- return pomVersionElement(document).textContent;
+ return pomVersion(document);
};
module.exports.writeVersion = function (contents, version) {
const newline = detectNewline(contents);
const document = pomDocument(contents);
- const versionElement = pomVersionElement(document);
- versionElement.textContent = version;
+ document.project.version = version;
- const xml = serialize(document);
+ const builder = new XMLBuilder({ format: true });
+ const xml = builder.build(document);
if (newline === CRLF) {
return xml.replace(/\n/g, CRLF) + CRLF;
diff --git a/package.json b/package.json
index 6995b105f..ebef88c41 100644
--- a/package.json
+++ b/package.json
@@ -47,12 +47,11 @@
"detect-indent": "^6.1.0",
"detect-newline": "^3.1.0",
"dotgitignore": "^2.1.0",
+ "fast-xml-parser": "^5.2.5",
"figures": "^3.2.0",
"find-up": "^5.0.0",
"git-semver-tags": "^5.0.1",
- "jsdom": "^25.0.1",
"semver": "^7.7.2",
- "w3c-xmlserializer": "^5.0.0",
"yaml": "^2.6.0",
"yargs": "^17.7.2"
},
diff --git a/test/mocks/pom-6.4.0-crlf.xml b/test/mocks/pom-6.4.0-crlf.xml
index 90b1bfdb7..1cb5a5ca7 100644
--- a/test/mocks/pom-6.4.0-crlf.xml
+++ b/test/mocks/pom-6.4.0-crlf.xml
@@ -1,20 +1,16 @@
4.0.0
-
com.mycompany.app
my-app
3.0.0
-
com.mycompany.app
my-module
6.4.0
-
2.0.0
-
org.some.dependency
@@ -28,3 +24,4 @@
+
diff --git a/test/mocks/pom-6.4.0-lf.xml b/test/mocks/pom-6.4.0-lf.xml
index 99cb25900..32b7e3da9 100644
--- a/test/mocks/pom-6.4.0-lf.xml
+++ b/test/mocks/pom-6.4.0-lf.xml
@@ -1,20 +1,16 @@
4.0.0
-
com.mycompany.app
my-app
3.0.0
-
com.mycompany.app
my-module
6.4.0
-
2.0.0
-
org.some.dependency
@@ -28,3 +24,4 @@
+