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
Attachments
Issue Links
- depends upon
-
MNG-3092 Resolution of version ranges with non-snapshot bounds can resolve to a snapshot version
- Reopened
- is duplicated by
-
MRELEASE-414 NullPointerException at DefaultVersionInfo.java line 122
- Closed
-
MRELEASE-574 NullPointerException in resolving ranges for test artifacts
- Closed
-
MRELEASE-519 release plugin fails on version ranges
- Closed
- is related to
-
MRELEASE-510 release:prepare resolves dependency ranges [1.0,) as SNAPSHOT
- Closed
- relates to
-
MRELEASE-620 NPE on a range dependency
- Closed