[ https://issues.apache.org/jira/browse/MNG-5368?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Stephen Connolly reopened MNG-5368: ----------------------------------- Maven 3.4.0 has been dropped. See [this thread|https://mail-archives.apache.org/mod_mbox/maven-dev/201701.mbox/%3CCA%2BnPnMx-e7kGYy3Hp87v8hLGdhp1q%3DtKLx_6QuZ4kGUqHEBGcw%40mail.gmail.com%3E] for more details. This issue will need to be re-scheduled for a Maven release in the (hopefully near) future. > UnsupportedOperationException thrown when version range is not correct in > dependencyManagement definitions > ---------------------------------------------------------------------------------------------------------- > > Key: MNG-5368 > URL: https://issues.apache.org/jira/browse/MNG-5368 > Project: Maven > Issue Type: Bug > Components: POM > Affects Versions: 3.0.4 > Environment: MacOS 10.7.5 Darwin Kernel Version 11.4.2: > xnu-1699.32.7~1/RELEASE_X86_64 x86_64 > Reporter: Andrew Haines > Assignee: Christian Schulte > Fix For: 3.4.0 > > > When specifying a non valid version range in a dependencyManagement tag, > instead of a descriptive error message we get a UnsupportedOperationException > thrown. The code at fault in > org.apache.maven.project.MavenProject#getManagedVersionMap is: > {code} > map = new HashMap<String, Artifact>(); > for ( Iterator<Dependency> i = > dependencyManagement.getDependencies().iterator(); i.hasNext(); ) > { > Dependency d = i.next(); > Artifact artifact = > repositorySystem.createDependencyArtifact( d ); > if ( artifact == null ) > { > map = Collections.emptyMap(); > } > map.put( d.getManagementKey(), artifact ); > {code} > When the artifact is null, the map is set to an immutable map and then the > null artifact is then attempted to be put into it. This will always fail. > This particular problem originates from code further down the stack in > org.apache.maven.repository.legacy.LegacyRepositorySystem: > {code} > public Artifact createDependencyArtifact( Dependency d ) > { > VersionRange versionRange; > try > { > versionRange = VersionRange.createFromVersionSpec( d.getVersion() > ); > } > catch ( InvalidVersionSpecificationException e ) > { > return null; > } > {code} > Instead of signalling appropriately that an error has occurred, this > exception is consumed and thus causes the erroneous behaviour mentioned in > the first code snippet -- This message was sent by Atlassian JIRA (v6.3.4#6332)