Normalize paths to sub modules
------------------------------

                 Key: MNG-3331
                 URL: http://jira.codehaus.org/browse/MNG-3331
             Project: Maven 2
          Issue Type: Improvement
          Components: Reactor and workspace
    Affects Versions: 2.0.8
            Reporter: Benjamin Bentmann
         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, 
File)|http://pmd.svn.sourceforge.net/viewvc/pmd/trunk/pmd/src/net/sourceforge/pmd/cpd/CPD.java?view=markup]
 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: 
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to