diff --git a/.changeset/few-coins-pump.md b/.changeset/few-coins-pump.md
new file mode 100644
index 0000000..668bfdd
--- /dev/null
+++ b/.changeset/few-coins-pump.md
@@ -0,0 +1,5 @@
+---
+"changesets": patch
+---
+
+Adapt for breaking changes of versions-common (introduced in #47).
diff --git a/changesets-maven-plugin/pom.xml b/changesets-maven-plugin/pom.xml
index 5cf1b64..115a68a 100644
--- a/changesets-maven-plugin/pom.xml
+++ b/changesets-maven-plugin/pom.xml
@@ -33,6 +33,11 @@
maven-artifact
provided
+
+ org.apache.maven.shared
+ maven-shared-utils
+ 3.2.1
+
org.apache.maven
maven-compat
diff --git a/changesets-maven-plugin/src/main/java/se/fortnox/changesets/maven/PomUpdater.java b/changesets-maven-plugin/src/main/java/se/fortnox/changesets/maven/PomUpdater.java
index ac0b9bd..9759d0a 100644
--- a/changesets-maven-plugin/src/main/java/se/fortnox/changesets/maven/PomUpdater.java
+++ b/changesets-maven-plugin/src/main/java/se/fortnox/changesets/maven/PomUpdater.java
@@ -1,19 +1,19 @@
package se.fortnox.changesets.maven;
import org.codehaus.mojo.versions.api.PomHelper;
-import org.codehaus.mojo.versions.rewriting.ModifiedPomXMLEventReader;
-import org.codehaus.plexus.util.IOUtil;
-import org.codehaus.plexus.util.WriterFactory;
-import org.codehaus.stax2.XMLInputFactory2;
+import org.codehaus.mojo.versions.rewriting.MutableXMLStreamReader;
import org.slf4j.Logger;
-import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
+import javax.xml.transform.TransformerException;
import java.io.File;
import java.io.IOException;
import java.io.Writer;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
import java.util.function.Consumer;
+import static java.util.Optional.ofNullable;
import static org.slf4j.LoggerFactory.getLogger;
/**
@@ -44,7 +44,7 @@ public static void setProjectVersion(File outFile, String newVersion) {
* Set parent project version in a pom file
*
* @param outFile The pom file to update
- * @param newVersion The new version to set the project parent reference to to
+ * @param newVersion The new version to set the project parent reference to
*/
public static void setProjectParentVersion(File outFile, String newVersion) {
updatePom(outFile, newPom -> {
@@ -56,19 +56,17 @@ public static void setProjectParentVersion(File outFile, String newVersion) {
});
}
- private static void updatePom(File outFile, Consumer updater) {
- try {
- StringBuilder input = PomHelper.readXmlFile(outFile);
- XMLInputFactory inputFactory = XMLInputFactory2.newInstance();
- inputFactory.setProperty(XMLInputFactory2.P_PRESERVE_LOCATION, Boolean.TRUE);
- ModifiedPomXMLEventReader newPom = new ModifiedPomXMLEventReader(input, inputFactory, outFile.getAbsolutePath());
-
+ private static void updatePom(File outFile, Consumer updater) {
+ try (MutableXMLStreamReader newPom = new MutableXMLStreamReader(outFile.toPath())) {
updater.accept(newPom);
-
- try (Writer writer = WriterFactory.newXmlWriter(outFile)) {
- IOUtil.copy(input.toString(), writer);
+ if(newPom.isModified()) {
+ try (Writer writer = Files.newBufferedWriter(
+ outFile.toPath(),
+ ofNullable(newPom.getEncoding()).map(Charset::forName).orElse(Charset.defaultCharset()))) {
+ writer.write(newPom.getSource());
+ }
}
- } catch (XMLStreamException | IOException e) {
+ } catch (XMLStreamException | IOException | TransformerException e) {
LOG.error("Failed to update {}", outFile, e);
}
}