Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NPE and wrong encoding for umlauts #931

Closed
BelliFCap opened this issue Mar 14, 2023 · 9 comments · Fixed by #932
Closed

NPE and wrong encoding for umlauts #931

BelliFCap opened this issue Mar 14, 2023 · 9 comments · Fixed by #932
Labels
Milestone

Comments

@BelliFCap
Copy link

Hi,

i am using org.codehaus.mojo:versions-maven-plugin in latest version (2.15.0) for updating multiple poms in my project.
Note: When I switch back to version 2.14.2 everything works fine.
Now there are two issues:

1. The umlauts in the poms are in wrong encoding after updating:
diff:
Hinzugefügt
-> Hinzugefügt

2. For one pom I get a NPE with these logs:

[ERROR] Failed to execute goal org.codehaus.mojo:versions-maven-plugin:2.15.0:use-dep-version (default-cli) on project migration: Execution default-cli of goal org.codehaus.mojo:versions-maven-plugin:2.15.0:use-dep-version failed.: NullPointerException -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:versions-maven-plugin:2.15.0:use-dep-version (default-cli) on project migration: Execution default-cli of goal org.codehaus.mojo:versions-maven-plugin:2.15.0:use-dep-version failed.
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal org.codehaus.mojo:versions-maven-plugin:2.15.0:use-dep-version failed.
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.NullPointerException
at org.codehaus.plexus.util.StringUtils.deleteWhitespace (StringUtils.java:147)
at org.codehaus.mojo.versions.api.PomHelper.setDependencyVersion (PomHelper.java:565)
at org.codehaus.mojo.versions.AbstractVersionsDependencyUpdaterMojo.updateDependencyVersion (AbstractVersionsDependencyUpdaterMojo.java:536)
at org.codehaus.mojo.versions.UseDepVersionMojo.useDepVersion (UseDepVersionMojo.java:366)
at org.codehaus.mojo.versions.UseDepVersionMojo.processModel (UseDepVersionMojo.java:201)
at org.codehaus.mojo.versions.UseDepVersionMojo.execute (UseDepVersionMojo.java:156)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:957)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:289)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:193)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)

@jarmoniuk
Copy link
Contributor

The NPE issue is fixed in a recently merged PR. Regarding the umlauts, could you please attach a simplified POM which reproduces the issue? It's an issue with encoding, but I wasn't able to reproduce it.

@BelliFCap
Copy link
Author

It's enough to put a comment in pom like this:

        <!-- Vorläufige Container für Tests -->

@jarmoniuk
Copy link
Contributor

I tried doing that before asking that question and could not reproduce the issue.

Are you using a specific encoding in the preamble by any chance?

@BelliFCap
Copy link
Author

The encoding of the pom is UTF-8.

@jarmoniuk
Copy link
Contributor

jarmoniuk commented Mar 14, 2023

Cannot reproduce.

Test files:

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>test-group</groupId>
  <artifactId>test-artifact</artifactId>
  <version>DEVELOP-SNAPSHOT</version>

  <description>Wörter mit Umlauten</description>
  <!-- Vorläufige Container für Tests -->

  <dependencies>
    <dependency>
      <groupId>localhost</groupId>
      <artifactId>dummy-api</artifactId>
      <version>1.0</version>
    </dependency>
  </dependencies>
</project>
invoker.goals = ${project.groupId}:${project.artifactId}:2.15.0:use-dep-version
invoker.mavenOpts = -Dincludes=localhost -DdepVersion=1.0.1
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'

Test passed.

Output:

<?xml version="1.0" encoding="utf-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>test-group</groupId>
  <artifactId>test-artifact</artifactId>
  <version>DEVELOP-SNAPSHOT</version>

  <description>Wörter mit Umlauten</description>
  <!-- Vorläufige Container für Tests -->

  <dependencies>
    <dependency>
      <groupId>localhost</groupId>
      <artifactId>dummy-api</artifactId>
      <version>1.0.1</version>
    </dependency>
  </dependencies>
</project>

@x0b
Copy link

x0b commented Mar 14, 2023

I'm experiencing the same issue with umlauts. Reproduction example: https://github.com/x0b/mojohaus-versions-repro/tree/master/fooapp

Running with a build from the current master

$ mvn org.codehaus.mojo:versions-maven-plugin:2.15.1-SNAPSHOT:use-dep-version -Dincludes=org.projectlombok:lombok -DdepVersion=1.18.26 -DgenerateBackupPoms=false

$ git diff
diff --git a/fooapp/pom.xml b/fooapp/pom.xml
index c3da863..acdb295 100644
--- a/fooapp/pom.xml
+++ b/fooapp/pom.xml
@@ -22,7 +22,7 @@

     <dependencyManagement>
         <dependencies>
-            <!-- Löts öf Germän umlauts-->
+            <!-- Löts öf Germän umlauts-->
             <dependency>
                 <groupId>org.testcontainers</groupId>
                 <artifactId>testcontainers</artifactId>
@@ -36,7 +36,7 @@
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
-            <version>1.18.24</version>
+            <version>1.18.26</version>
        </dependency>
     </dependencies>

@jarmoniuk
Copy link
Contributor

jarmoniuk commented Mar 14, 2023

Thanks for that.

I guess this must depend on the environment. I still can't reproduce the issue using your project.

Tried on Mac OS as well as on Linux.

Do you think you could possibly share (obfuscated, if needed) debug log?

@x0b
Copy link

x0b commented Mar 14, 2023

Not really, but you are right about the environment: it is using the encoding from environment, instead of the encoding as specified in the pom file.

The issue doesn't occur when the environment is set to UTF-8:

$ env JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 mvn org.codehaus.mojo:versions-maven-plugin:2.15.1-SNAPSHOT:use-dep-version -Dincludes=org.projectlombok:lombok -DdepVersion=1.18.26 -DgenerateBackupPoms=false

But when not set or set to Cp1252, the characters get mangled:

$ env JAVA_TOOL_OPTIONS=-Dfile.encoding=windows-1252 mvn org.codehaus.mojo:versions-maven-plugin:2.15.1-SNAPSHOT:use-dep-version -Dincludes=org.projectlombok:lombok -DdepVersion=1.18.26 -DgenerateBackupPoms=false

Edit: I've re-checked on version 1.14.2, both variants do not cause the issue. So that really changed with 1.15.x.

@jarmoniuk
Copy link
Contributor

jarmoniuk commented Mar 14, 2023

Yes, indeed. I finally managed to reproduce a similar issue setting -Dfile.encoding to a different value.

Edit: I've re-checked on version 1.14.2, both variants do not cause the issue. So that really changed with 1.15.x.

Thanks, that helps narrow the issue down.

Running post-build script: /Users/ajarmoniuk/IdeaProjects/versions-maven-plugin-2/versions-maven-plugin/target/it/it-use-dep-version-issue-931-umlauts/verify.groovy
Assertion failed: 

assert project.description == 'Wörter mit Umlauten'
       |       |           |
       |       |           false
       |       Wörter mit Umlauten
       4.0.0test-grouptest-artifactDEVELOP-SNAPSHOTWörter mit Umlautenlocalhostdummy-api1.0.1

jarmoniuk added a commit to jarmoniuk/versions-maven-plugin that referenced this issue Mar 14, 2023
jarmoniuk added a commit to jarmoniuk/versions-maven-plugin that referenced this issue Mar 14, 2023
jarmoniuk added a commit to jarmoniuk/versions-maven-plugin that referenced this issue Mar 14, 2023
…tring to circumvent problems with encoding
@slawekjaranowski slawekjaranowski added this to the 2.16.0 milestone May 9, 2023
jarmoniuk added a commit to jarmoniuk/versions-maven-plugin that referenced this issue May 10, 2023
…tring to circumvent problems with encoding
jarmoniuk added a commit to jarmoniuk/versions-maven-plugin that referenced this issue May 10, 2023
…tring to circumvent problems with encoding

Uses Plexus XmlStreamReader to guess file encoding.
jarmoniuk added a commit to jarmoniuk/versions-maven-plugin that referenced this issue May 11, 2023
…tring to circumvent problems with encoding

Uses Plexus XmlStreamReader to guess file encoding.
slawekjaranowski added a commit that referenced this issue May 14, 2023
…Helper (#932)

Co-authored-by: Slawomir Jaranowski <s.jaranowski@gmail.com>
dongjoon-hyun pushed a commit to apache/spark that referenced this issue Jun 18, 2023
### What changes were proposed in this pull request?
The pr aims to update some maven plugins to newest version. include:
- versions-maven-plugin from 2.15.0 to 2.16.0
- maven-source-plugin from 3.2.1 to 3.3.0
- maven-surefire-plugin from 3.1.0 to 3.1.2
- maven-dependency-plugin from 3.5.0 to 3.6.0

### Why are the changes needed?
- versions-maven-plugin
1.Release Notes: https://github.com/mojohaus/versions/releases/tag/2.16.0
2.Bug Fix:
Resolves: display-dependency-updates only shows updates from the most major allowed segment (mojohaus/versions#966) ajarmoniuk
Resolves mojohaus/versions#931: Fixing problems with encoding in UseDepVersion and PomHelper (mojohaus/versions#932) ajarmoniuk
Resolves mojohaus/versions#916: Partially reverted mojohaus/versions#799. (mojohaus/versions#924) ajarmoniuk
Resolves mojohaus/versions#954: Excluded plexus-container-default (mojohaus/versions#955) ajarmoniuk
Resolves mojohaus/versions#951: DefaultArtifactVersion::getVersion can be null (mojohaus/versions#952) ajarmoniuk
BoundArtifactVersion.toString() to work with NumericVersionComparator (mojohaus/versions#930) ajarmoniuk
Issue mojohaus/versions#925: Protect against an NPE if a dependency version is defined in dependencyManagement (mojohaus/versions#926) ajarmoniuk

- maven-source-plugin
v3.2.1 VS v3.3.0: apache/maven-source-plugin@maven-source-plugin-3.2.1...maven-source-plugin-3.3.0

- maven-surefire-plugin
Release Notes: https://github.com/apache/maven-surefire/releases/tag/surefire-3.1.2

- maven-dependency-plugin
v3.5.0 VS v3.6.0: apache/maven-dependency-plugin@maven-dependency-plugin-3.5.0...maven-dependency-plugin-3.6.0

### Does this PR introduce _any_ user-facing change?
No.

### How was this patch tested?
Pass GA.

Closes #41641 from panbingkun/SPARK-44085.

Authored-by: panbingkun <pbk1982@gmail.com>
Signed-off-by: Dongjoon Hyun <dongjoon@apache.org>
czxm pushed a commit to czxm/spark that referenced this issue Jun 19, 2023
### What changes were proposed in this pull request?
The pr aims to update some maven plugins to newest version. include:
- versions-maven-plugin from 2.15.0 to 2.16.0
- maven-source-plugin from 3.2.1 to 3.3.0
- maven-surefire-plugin from 3.1.0 to 3.1.2
- maven-dependency-plugin from 3.5.0 to 3.6.0

### Why are the changes needed?
- versions-maven-plugin
1.Release Notes: https://github.com/mojohaus/versions/releases/tag/2.16.0
2.Bug Fix:
Resolves: display-dependency-updates only shows updates from the most major allowed segment (mojohaus/versions#966) ajarmoniuk
Resolves mojohaus/versions#931: Fixing problems with encoding in UseDepVersion and PomHelper (mojohaus/versions#932) ajarmoniuk
Resolves mojohaus/versions#916: Partially reverted mojohaus/versions#799. (mojohaus/versions#924) ajarmoniuk
Resolves mojohaus/versions#954: Excluded plexus-container-default (mojohaus/versions#955) ajarmoniuk
Resolves mojohaus/versions#951: DefaultArtifactVersion::getVersion can be null (mojohaus/versions#952) ajarmoniuk
BoundArtifactVersion.toString() to work with NumericVersionComparator (mojohaus/versions#930) ajarmoniuk
Issue mojohaus/versions#925: Protect against an NPE if a dependency version is defined in dependencyManagement (mojohaus/versions#926) ajarmoniuk

- maven-source-plugin
v3.2.1 VS v3.3.0: apache/maven-source-plugin@maven-source-plugin-3.2.1...maven-source-plugin-3.3.0

- maven-surefire-plugin
Release Notes: https://github.com/apache/maven-surefire/releases/tag/surefire-3.1.2

- maven-dependency-plugin
v3.5.0 VS v3.6.0: apache/maven-dependency-plugin@maven-dependency-plugin-3.5.0...maven-dependency-plugin-3.6.0

### Does this PR introduce _any_ user-facing change?
No.

### How was this patch tested?
Pass GA.

Closes apache#41641 from panbingkun/SPARK-44085.

Authored-by: panbingkun <pbk1982@gmail.com>
Signed-off-by: Dongjoon Hyun <dongjoon@apache.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment