You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Martin Todorov (JIRA)" <ji...@codehaus.org> on 2014/06/28 01:44:10 UTC

[jira] (MINDEXER-49) M2GavCalculator does not parse GAV correctly for classifiers with dots

    [ https://jira.codehaus.org/browse/MINDEXER-49?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=348942#comment-348942 ] 

Martin Todorov commented on MINDEXER-49:
----------------------------------------

I don't think it's a very good idea to have dots in your classifier at all. What would constitute a reasonable use case? Could you provide a real-life example?
The dot is used across a lot of places as an indication of where the GAV details end. You cannot currently guess easily where the GAV ends otherwise. Perhaps somebody didn't consider mentioning this in the Maven docs. I think this should not be implemented/supported, or encouraged as a practice. 

> M2GavCalculator does not parse GAV correctly for classifiers with dots
> ----------------------------------------------------------------------
>
>                 Key: MINDEXER-49
>                 URL: https://jira.codehaus.org/browse/MINDEXER-49
>             Project: Maven Indexer
>          Issue Type: Bug
>    Affects Versions: 4.1.1, 4.1.2
>         Environment: all
>            Reporter: René Zanner
>            Priority: Critical
>
> When having a classifier with dots (classifier.with.dots) and an extension with or without dots (e.g. tar.gz), the calculation of Gav changes classifier and type/extension to something clearly not intended:
> || ||Attached artifact definition||M2GavCalculator result||
> ||classifier|classifier.with.dots|classifier|
> ||extension/type|tar.gz|with.dots.tar.gz|
> The problem seems to be located in lines 136ff, 175ff *and* 216ff (do you have a code duplication issue as well? ;-) ): 
> {code}
> int nExtPos = tail.indexOf( '.' );
> ...
> ext = tail.substring( nExtPos + 1 );
> classifier = tail.charAt( 0 ) == '-' ? tail.substring( 1, nExtPos ) : null;
> {code}
> This code assumes that the classifier ends at the first dot in the "tail" (which is everything after the version number).
> Since Maven allows dots in classifiers _as well as in extensions_, the parsing has to be made more intelligent. So, it is not enough to just turn the parsing around and use the part after the last dot as extension and before it as classifier (that's why I used the 'tar.gz' extension in my example above).
> I do not have a solution for this except checking for well-known extensions (tar.gz, xml, jar, zip, a.s.o.) and build the classifier/extension parsing around it.



--
This message was sent by Atlassian JIRA
(v6.1.6#6162)