maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Benjamin Bentmann (JIRA)" <>
Subject [jira] Reopened: (MNG-3331) Normalize paths to sub modules
Date Tue, 05 Feb 2008 18:25:28 GMT


Benjamin Bentmann reopened MNG-3331:

My patch intentionally performed {{URI.normalize()}} for Non-Windows and ONLY for Non-Windows
OS. Your recent commit r618708 now calls this method in all cases which is
# unnecessary on a Windows platform since you already call {{[File.getCanonicalFile()|]}}
here and is
# dangerous on a Windows platform since it destroys UNC paths (see [Sun Bug 4723726|]

> Normalize paths to sub modules
> ------------------------------
>                 Key: MNG-3331
>                 URL:
>             Project: Maven 2
>          Issue Type: Improvement
>          Components: Reactor and workspace
>    Affects Versions: 2.0.8
>            Reporter: Benjamin Bentmann
>            Assignee: John Casey
>             Fix For: 2.0.9, 2.1-alpha-1
>         Attachments: normalized-module-file.patch
> When collecting the sub modules during a reactor build, the path to the module POMs should
always be normalized. Currently, this happens only on a Windows platform via File.getCanonicalFile().
The attached patch adds normalization (but not canonicalization) for other platforms, too.
> The motivation: Consider a multi module project with the following directory structure:
>   project/
>     project-parent/
>     project-module/
> such that the parent POM in project-parent will contain
>    <module>../project-module</module>
> to reference the sub module. Simple string/path concatenation will therefore deliver
a path like
>    {SNIP}/project-parent/../project-module
> for the sub module. Having
>   {SNIP}/project-module 
> instead is surely better, and may it be just for nice log output.
> However, certain plugins/tools try to detect symlinks by comparing the canonicalized
path with the absolute path of a file. While users of DirectoryScanner are usually fine because
this class always canonicalizes the base directory before the check, code that does not know
about a base directory but simply gets a single file will erroneously detect a symlink because
".." gets removed during canonicalization.
> This actually happens with the CpdReport of the maven-pmd-plugin. See [CPD.addFile(int,
for the cause, i.e. the code near line 97 where it prints "Skipping {file} since it appears
to be a symlink".

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:


View raw message