Details
-
Type:
Improvement
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 2.2.1, 3.0-alpha-4
-
Fix Version/s: 3.0-alpha-7
-
Component/s: POM
-
Labels:None
-
Environment:Unix, Mac
-
Complexity:Intermediate
-
Number of attachments :
Description
Consider this snippet:
<parent> <relativePath>..\pom.xml</relativePath> </parent>
Note in particular the backslash used in the path. While this path will be properly resolved on a Windows box, it will fail to resolve the local parent on a Unix/Mac box (as the backslash is not a separator but escape character here). This applies to other paths in the POM as well.
For platform-independent behavior, we should either encourage the user to use forward slashes (by means of validation warnings/errors) or have Maven convert the paths internally.
Issue Links
Activity
Benjamin Bentmann
made changes -
Benjamin Bentmann
made changes -
| Resolution | Fixed [ 1 ] | |
| Fix Version/s | 3.0-alpha-7 [ 16087 ] | |
| Assignee | Benjamin Bentmann [ bentmann ] | |
| Status | Open [ 1 ] | Closed [ 6 ] |
Benjamin Bentmann
made changes -
In my eyes writing <relativePath>..\pom.xml</relativePath> means <<dot>> <<dot>> <<escapeP>> <<letter o>> <<letter m>> etc.
And it makes no sense.
a correct way must be to write <relativePath>../pom.xml</relativePath>
I have written <relativePath>../pom.xml</relativePath> several places, and it seems to work.
So yes backslash is an error. And should procduce a warning.
The question is just how do we know that escape is used wrong?
A sentence like <relativePath>\<SYSTEM\$HOME\>pom.xml</relativePath> could make sense on Open VMS.
My conclusion is that this is just something that developers should know.
A simulary situation is to write <relativePath>$
{myParameter}/pom.xml</relativePath> and not having set a value to property myParameter. In this case maven tells that it cannot find file ${myParameter}/pom.xml.
Maybe maven's pom checkker tool could be told to check for these things?