Maven 2 & 3

DefaultArtifact: Method getVersionRange returns null also if field version is already set! [SMALL PATCH ATTACHED]

Details

  • Type: Improvement Improvement
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 2.0-alpha-1
  • Fix Version/s: 2.0.9
  • Labels:
    None
  • Environment:
    Java5, WinXp
  • Complexity:
    Intermediate
  • Number of attachments :
    1

Description

In class org.apache.maven.artifact.DefaultArtifact method getVersionRange returns null altough the version field is already set. In attached patch I check in method getVersionRange if versionRange is null if field version or baseVersion is already set and then create the versionRange by using version/baseVersion. By the way I've replaced HashMap with a LinkedHashMap to remember the insertion order of meta data.

For those who don't see why this patch is needed can try binding the eclipse plugin to a phase before the jar plugin is bound. The eclipse plugin uses the org.apache.maven.artifact.resolver.DefaultArtifactCollector which is invoking method setVersion of org.apache.maven.artifact.DefaultArtifact which will erase field version range and cause a NullPointerException in plugin jar that doesn't check if returned version range is null.

Cheers,
Martin

Activity

Hide
Brian Fox added a comment -

I suspect this is already fixed. Can you reproduce?

Show
Brian Fox added a comment - I suspect this is already fixed. Can you reproduce?
Hide
Martin Zeltner added a comment -

I can reproduce the problem, so problem must be fixed. Just add the lines in method "getVersionRange". Cheers, Martin

Show
Martin Zeltner added a comment - I can reproduce the problem, so problem must be fixed. Just add the lines in method "getVersionRange". Cheers, Martin
Hide
Brian Fox added a comment -

Can we get a sample project to reproduce this? The code change seems logical, but trying to reproduce this in a unit shows me that what you see might be a symptom of a larger problem. setVersion() sets version and baseversion and clears the versionRange. How is it that version is null if it just got set? And if it was set to null so would the baseversion so the change shouldn't help. Something else is going on here.

Show
Brian Fox added a comment - Can we get a sample project to reproduce this? The code change seems logical, but trying to reproduce this in a unit shows me that what you see might be a symptom of a larger problem. setVersion() sets version and baseversion and clears the versionRange. How is it that version is null if it just got set? And if it was set to null so would the baseversion so the change shouldn't help. Something else is going on here.
Hide
John Casey added a comment -

Still waiting on a test project to reproduce this problem...

Show
John Casey added a comment - Still waiting on a test project to reproduce this problem...
Hide
Martin Zeltner added a comment -

With Maven 2.0.8 I had to apply this patch but with 2.0.9 it seams to work without.

It should be that such small things like this issue is discussed when the issue is created (Oct 06) an not 20 months later! So I have also time to discuss it and I'm still in the context of this bug, thanks.

Cheers,
Martin

Show
Martin Zeltner added a comment - With Maven 2.0.8 I had to apply this patch but with 2.0.9 it seams to work without. It should be that such small things like this issue is discussed when the issue is created (Oct 06) an not 20 months later! So I have also time to discuss it and I'm still in the context of this bug, thanks. Cheers, Martin

People

Vote (1)
Watch (2)

Dates

  • Created:
    Updated:
    Resolved: