Uploaded image for project: 'Maven'
  1. Maven
  2. MNG-7449

[REGRESSION] StringVisitorModelInterpolator NullPointerException

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Information Provided
    • 3.8.5
    • None
    • None

    Description

      Since Maven 3.8.5 our own custom Maven plugin is failing with a NullPointerException when trying to interpolate Maven properties in a Maven model.

      Code:

      StringVisitorModelInterpolator interpolator = new StringVisitorModelInterpolator();
      interpolated = interpolator.interpolateModel(model, null, new DefaultModelBuildingRequest(), new ModelProblemCollector() {
          @Override
          public void add(ModelProblemCollectorRequest modelProblemCollectorRequest) {
              problems.add(modelProblemCollectorRequest);
          }
      }); 

      Stacktrace:

      [ERROR] Failed to execute goal nl.ing.cis.tools.deploy:deploy-configuration-maven-plugin:5.2.0:flatten (default) on project DNL_PMDM_HelloYou: Execution default of goal nl.ing.cis.tools.deploy:deploy-configuration-maven-plugin:5.2.0:flatten failed.: NullPointerException -> [Help 1]
      org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal nl.ing.cis.tools.deploy:deploy-configuration-maven-plugin:5.2.0:flatten (default) on project DNL_PMDM_HelloYou: Execution default of goal nl.ing.cis.tools.deploy:deploy-configuration-maven-plugin:5.2.0:flatten failed.
          at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:306)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:211)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:165)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:157)
          at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:121)
          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:127)
          at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
          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:960)
          at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
          at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
          at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke (Method.java:498)
          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 of goal nl.ing.cis.tools.deploy:deploy-configuration-maven-plugin:5.2.0:flatten failed.
          at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
          at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:301)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:211)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:165)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:157)
          at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:121)
          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:127)
          at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
          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:960)
          at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
          at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
          at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke (Method.java:498)
          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.apache.maven.model.interpolation.AbstractStringBasedModelInterpolator.createValueSources (AbstractStringBasedModelInterpolator.java:165)
          at org.apache.maven.model.interpolation.StringVisitorModelInterpolator.interpolateModel (StringVisitorModelInterpolator.java:101)
          at nl.ing.cis.tools.tibcodeploy.utils.maven.PropertiesInterpolator.interpolateProperties (PropertiesInterpolator.java:87)
          at nl.ing.cis.tools.deploy.build.common.AbstractBuilder.replaceProperties (AbstractBuilder.java:236)
          at nl.ing.cis.tools.deploy.build.common.AbstractBuilder.replacePropertiesInXml (AbstractBuilder.java:261)
          at nl.ing.cis.tools.deploy.build.flattenedbindings.FlattenedBindingsBuilder.prefetchDtlScmResources (FlattenedBindingsBuilder.java:683)
          at nl.ing.cis.tools.deploy.build.flattenedbindings.FlattenedBindingsBuilder.build (FlattenedBindingsBuilder.java:91)
          at nl.ing.cis.tools.deploy.configuration.maven.FlattenMojo.buildBindings (FlattenMojo.java:140)
          at nl.ing.cis.tools.deploy.configuration.maven.FlattenMojo.doFlatten (FlattenMojo.java:122)
          at nl.ing.cis.tools.deploy.configuration.maven.FlattenMojo.execute (FlattenMojo.java:101)
          at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
          at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:301)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:211)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:165)
          at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:157)
          at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:121)
          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:127)
          at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
          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:960)
          at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
          at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
          at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
          at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
          at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
          at java.lang.reflect.Method.invoke (Method.java:498)
          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) 

      When analysing the issue it showed that the NullPointerException is caused because the AbstractStringBasedModelInterpolator tries to use the newly introduced ModelVersionProcessor, but the member is null.

      Programmatically providing the interpolator with an instance of the default ModelVersionProcessor class solves this issue. But that is not backwards compatible as this class is new in Maven 3.8.5.

      interpolator.setVersionPropertiesProcessor(new DefaultModelVersionProcessor()); 

      Is this a bug, or am I doing something wrong here?

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              redelang Ronnie de Lang
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: