diff --git a/versions-common/src/main/java/org/codehaus/mojo/versions/api/PomHelper.java b/versions-common/src/main/java/org/codehaus/mojo/versions/api/PomHelper.java index 974239a94..ada322996 100644 --- a/versions-common/src/main/java/org/codehaus/mojo/versions/api/PomHelper.java +++ b/versions-common/src/main/java/org/codehaus/mojo/versions/api/PomHelper.java @@ -71,6 +71,7 @@ import org.apache.maven.project.ProjectBuildingRequest; import org.apache.maven.project.ProjectBuildingResult; import org.codehaus.mojo.versions.rewriting.ModifiedPomXMLEventReader; +import org.codehaus.mojo.versions.utils.MavenProjectUtils; import org.codehaus.mojo.versions.utils.ModelNode; import org.codehaus.mojo.versions.utils.RegexUtils; import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException; @@ -1364,9 +1365,7 @@ private static List getRawModelTree(ModelNode rootNode, Log logger, X .map(pomFile -> { try { ModifiedPomXMLEventReader pom = new ModifiedPomXMLEventReader( - new StringBuilder(new String(Files.readAllBytes(pomFile))), - inputFactory, - pomFile.toString()); + MavenProjectUtils.readFile(pomFile), inputFactory, pomFile.toString()); return new ModelNode(rootNode, getRawModel(pom), pom); } catch (IOException e) { throw new UncheckedIOException("Could not open " + pomFile, e); diff --git a/versions-common/src/main/java/org/codehaus/mojo/versions/utils/MavenProjectUtils.java b/versions-common/src/main/java/org/codehaus/mojo/versions/utils/MavenProjectUtils.java index 730ee44ed..a7f3bbe57 100644 --- a/versions-common/src/main/java/org/codehaus/mojo/versions/utils/MavenProjectUtils.java +++ b/versions-common/src/main/java/org/codehaus/mojo/versions/utils/MavenProjectUtils.java @@ -18,6 +18,10 @@ * under the License. */ +import java.io.BufferedReader; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.List; import java.util.Set; import java.util.TreeSet; @@ -150,4 +154,16 @@ public static Dependency interpolateVersion(final Dependency dependency, final M } return dependency; } + + /** + * Reads the given file to a StringBuilder + * @param path file path + * @return StringBuilder containing the given file + * @throws IOException thrown in case of an I/O error + */ + public static StringBuilder readFile(Path path) throws IOException { + try (BufferedReader reader = Files.newBufferedReader(path)) { + return reader.lines().collect(StringBuilder::new, StringBuilder::append, StringBuilder::append); + } + } } diff --git a/versions-maven-plugin/src/it/it-use-dep-version-issue-931-umlauts/invoker.properties b/versions-maven-plugin/src/it/it-use-dep-version-issue-931-umlauts/invoker.properties new file mode 100644 index 000000000..eea1477f0 --- /dev/null +++ b/versions-maven-plugin/src/it/it-use-dep-version-issue-931-umlauts/invoker.properties @@ -0,0 +1,2 @@ +invoker.goals = ${project.groupId}:${project.artifactId}:${project.version}:use-dep-version +invoker.mavenOpts = -Dfile.encoding=latin1 -Dincludes=localhost -DdepVersion=1.0.1 diff --git a/versions-maven-plugin/src/it/it-use-dep-version-issue-931-umlauts/pom.xml b/versions-maven-plugin/src/it/it-use-dep-version-issue-931-umlauts/pom.xml new file mode 100644 index 000000000..76e36d2fd --- /dev/null +++ b/versions-maven-plugin/src/it/it-use-dep-version-issue-931-umlauts/pom.xml @@ -0,0 +1,19 @@ + + + 4.0.0 + + test-group + test-artifact + DEVELOP-SNAPSHOT + + Wörter mit Umlauten + + + + + localhost + dummy-api + 1.0 + + + diff --git a/versions-maven-plugin/src/it/it-use-dep-version-issue-931-umlauts/verify.groovy b/versions-maven-plugin/src/it/it-use-dep-version-issue-931-umlauts/verify.groovy new file mode 100644 index 000000000..a057a3c63 --- /dev/null +++ b/versions-maven-plugin/src/it/it-use-dep-version-issue-931-umlauts/verify.groovy @@ -0,0 +1,5 @@ +import groovy.xml.XmlSlurper + +def project = new XmlSlurper().parse( new File( basedir, 'pom.xml' ) ) +assert project.dependencies.dependency.version == '1.0.1' +assert project.description == 'Wörter mit Umlauten' diff --git a/versions-maven-plugin/src/main/java/org/codehaus/mojo/versions/UseDepVersionMojo.java b/versions-maven-plugin/src/main/java/org/codehaus/mojo/versions/UseDepVersionMojo.java index 6a8e35f4f..107429ca0 100644 --- a/versions-maven-plugin/src/main/java/org/codehaus/mojo/versions/UseDepVersionMojo.java +++ b/versions-maven-plugin/src/main/java/org/codehaus/mojo/versions/UseDepVersionMojo.java @@ -20,7 +20,6 @@ import java.io.File; import java.io.IOException; -import java.nio.file.Files; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; @@ -54,6 +53,7 @@ import org.codehaus.mojo.versions.recording.DefaultPropertyChangeRecord; import org.codehaus.mojo.versions.rewriting.ModifiedPomXMLEventReader; import org.codehaus.mojo.versions.utils.DependencyComparator; +import org.codehaus.mojo.versions.utils.MavenProjectUtils; import org.codehaus.mojo.versions.utils.ModelNode; import org.codehaus.plexus.util.FileUtils; @@ -136,10 +136,10 @@ protected void update(ModifiedPomXMLEventReader pom) public void execute() throws MojoExecutionException, MojoFailureException { validateInput(); List rawModels; + try { ModifiedPomXMLEventReader pomReader = newModifiedPomXER( - new StringBuilder( - new String(Files.readAllBytes(getProject().getFile().toPath()))), + MavenProjectUtils.readFile(getProject().getFile().toPath()), getProject().getFile().toPath().toString()); ModelNode rootNode = new ModelNode(PomHelper.getRawModel(pomReader), pomReader); rawModels = PomHelper.getRawModelTree(rootNode, getLog());