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

NullPointerException if missing id in org.apache.maven.lifecycle.Lifecycle

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 3.0.4
    • 3.2.3
    • Plugins and Lifecycle
    • None
    • Ubuntu Precise, Maven 3.0.4

    Description

      I've been working with custom lifecycles, and accidentally left the "id" out of one of them. You can see it in this example where I commented out the key line (everything works fine if this line is uncommented):

      <component-set>
        <components>
          <component>
            <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
            <role-hint>phase-test</role-hint>
            <implementation>
              org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping
            </implementation>
          </component>
          <component>
            <role>org.apache.maven.lifecycle.Lifecycle</role>
            <role-hint>phase-test</role-hint>
            <implementation>org.apache.maven.lifecycle.Lifecycle</implementation>
            <configuration>
      <!--         <id>phase-test</id>  -->
               <phases>
                  <phase>tp-pre-new-phase</phase>
                  <phase>tp-new-phase</phase>
                  <phase>tp-post-new-phase</phase>
               </phases>
               <default-phases>
                  <tp-new-phase>org.riedl:phase-test-maven-plugin:greet</tp-new-phase>
               </default-phases>
            </configuration>
          </component>
        </components>
      </component-set>
      ~                           
      

      Here's most of the stack trace:

      (macro: ~/Src/lenskit-projects/tryout-phase-test-plugin) mvn tp-post-new-phase
      [INFO] Scanning for projects...
      [ERROR] Internal error: java.lang.NullPointerException -> [Help 1]
      org.apache.maven.InternalErrorException: Internal error: java.lang.NullPointerException
              at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168)
              at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
              at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
              at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:597)
              at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
              at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
              at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
              at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
      Caused by: java.lang.NullPointerException
              at java.lang.String.compareTo(String.java:1167)
              at org.apache.maven.lifecycle.internal.DefaultLifecyclePluginAnalyzer$1.compare(DefaultLifecyclePluginAnalyzer.java:144)
              at org.apache.maven.lifecycle.internal.DefaultLifecyclePluginAnalyzer$1.compare(DefaultLifecyclePluginAnalyzer.java:140)
              at java.util.Arrays.mergeSort(Arrays.java:1270)
              at java.util.Arrays.sort(Arrays.java:1210)
              at java.util.Collections.sort(Collections.java:159)
              at org.apache.maven.lifecycle.internal.DefaultLifecyclePluginAnalyzer.getOrderedLifecycles(DefaultLifecyclePluginAnalyzer.java:139)
              at org.apache.maven.lifecycle.internal.DefaultLifecyclePluginAnalyzer.getPluginsBoundByDefaultToAllLifecycles(DefaultLifecyclePluginAnalyzer.java:96)
              at org.apache.maven.model.plugin.DefaultLifecycleBindingsInjector.injectLifecycleBindings(DefaultLifecycleBindingsInjector.java:63)
              at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:397)
              at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:371)
              at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:560)
      

      The NullPointerException happens with most attempts to run the project, such as "mvn foo". I've attached the pom.xml, lifecycles.xml, components.xml, and the Java for the plugin. I think only components.xml is relevant.

      Attachments

        1. phase-test.tar
          50 kB
          John Riedl
        2. lifecycles.xml
          0.6 kB
          John Riedl
        3. components.xml
          0.8 kB
          John Riedl
        4. pom.xml
          0.6 kB
          John Riedl

        Activity

          People

            Unassigned Unassigned
            riedl John Riedl
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: