Uploaded image for project: 'Maven Release Plugin'
  1. Maven Release Plugin
  2. MRELEASE-318

Release plugin throws NullPointerException when using version range for dependency

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Blocker
    • Resolution: Fixed
    • Affects Version/s: 2.0-beta-7
    • Fix Version/s: 2.1
    • Component/s: prepare
    • Labels:
      None
    • Flags:
      Patch

      Description

      After upgrading to 2.0.8 I find that the release plugin throws NPE if any dependency uses version range.

      I have one dependency with version range <version>[1.0,2.0)</version> the rest are test scope with fixed version.

      Here is the crash stack trace:
      java.lang.NullPointerException: version was null for com.xrite:xrite-colorlib-api
      [13:42:05]: at org.apache.maven.artifact.DefaultArtifact.getBaseVersion(DefaultArtifact.java:362)
      [13:42:05]: at org.apache.maven.artifact.DefaultArtifact.isSnapshot(DefaultArtifact.java:557)
      [13:42:05]: at org.apache.maven.shared.release.phase.CheckDependencySnapshotsPhase.checkArtifact(CheckDependencySnapshotsPhase.java:252)
      [13:42:05]: at org.apache.maven.shared.release.phase.CheckDependencySnapshotsPhase.checkProject(CheckDependencySnapshotsPhase.java:138)
      [13:42:05]: at org.apache.maven.shared.release.phase.CheckDependencySnapshotsPhase.execute(CheckDependencySnapshotsPhase.java:106)
      [13:42:05]: at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:194)
      [13:42:05]: at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:131)
      [13:42:05]: at org.apache.maven.shared.release.DefaultReleaseManager.prepare(DefaultReleaseManager.java:94)
      [13:42:05]: at org.apache.maven.plugins.release.PrepareReleaseMojo.execute(PrepareReleaseMojo.java:127)
      [13:42:05]: at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:447)
      [13:42:05]: at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:559)
      [13:42:05]: at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:513)
      [13:42:05]: at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:483)
      [13:42:05]: at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:331)
      [13:42:05]: at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:228)
      [13:42:05]: at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:143)
      [13:42:05]: at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:333)
      [13:42:05]: at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:126)
      [13:42:05]: at org.apache.maven.cli.MavenCli.main(MavenCli.java:282)
      [13:42:05]: at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      [13:42:05]: at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      [13:42:05]: at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
      [13:42:05]: at java.lang.reflect.Method.invoke(Method.java:597)
      [13:42:05]: at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
      [13:42:05]: at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
      [13:42:05]: at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
      [13:42:05]: at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

      It seems the reason version is null is that the call to selectVersionFromNewRangeIfAvailable() assumes that versionRange.getRecommendedVersion() will always return non-null, else it sets the version to null! However during the release:prepare phase this is not true, see the output:

      [13:42:04]: [INFO] [release:prepare]
      [13:42:04]: [INFO] Verifying that there are no local modifications...
      [13:42:04]: [INFO] Executing: svn --non-interactive status
      [13:42:04]: [INFO] Working directory: C:\BuildAgent\work\23044d751bcc9843
      [13:42:05]: [INFO] Checking dependencies and plugins for snapshots ...
      [13:42:05]: TEST!!! version=null
      [13:42:05]: TEST!!! versionRange=[1.0,2.0)
      [13:42:05]: TEST!!! getRecommendedVersion=null

      TEST!!! Lines are my test code so I could see what is going on here.

        Attachments

        1. MNG-3351_dependency_poms.zip
          17 kB
          Dave Hoffer
        2. MNG-3351.zip
          7 kB
          Dave Hoffer
        3. MNG-3351-unittest.patch
          13 kB
          Mark Hobson
        4. simple-testcase.zip
          2 kB
          Mark Hobson
        5. simple-test-case-console-log.txt
          5 kB
          Dave Hoffer

          Issue Links

            Activity

              People

              • Assignee:
                brettporter Brett Porter
                Reporter:
                dhoffer@xrite.com David Hoffer
              • Votes:
                17 Vote for this issue
                Watchers:
                16 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: