[ 
http://jira.codehaus.org/browse/MNG-5035?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jesse Glick reopened MNG-5035:
------------------------------


Naturally such paths not portable. The point is that in this case the directory 
name is passed as a command-line option (i.e. not as part of the POM) and thus 
does not need to be portable. Same would be if it were specified in 
{{settings.xml}} and so only applicable to the current machine. Unix permits 
file names to contain backslashes, and the correct path including shell escapes 
is being passed to Maven, but it mangles it.

Simplest patch would be to use only:

{noformat}
new File( str.replace( '/', File.separatorChar ) )
{noformat}

which would work as now on Windows and return str unmodified on other systems.

> \ -> / on Unix for java.io.File-typed mojo param
> ------------------------------------------------
>
>                 Key: MNG-5035
>                 URL: http://jira.codehaus.org/browse/MNG-5035
>             Project: Maven 2 & 3
>          Issue Type: Bug
>          Components: Plugin API
>    Affects Versions: 3.0.3
>         Environment: Ubuntu 10.04, JDK 6
>            Reporter: Jesse Glick
>            Assignee: Benjamin Bentmann
>
> I created a file {{/tmp/a\b/c}} (note backslash). I created a quickstart app 
> with
> {noformat}
>     public static void main( String[] args )
>     {
>         System.out.println( System.getProperty("user.dir") );
>         System.out.println(Arrays.toString(new File("").listFiles()));
>     }
> {noformat}
> and then run it with
> {noformat}
> mvn -Dexec.workingdir=/tmp/a\\b "-Dexec.args=-classpath %classpath ....App" 
> -Dexec.executable=.../java process-classes 
> org.codehaus.mojo:exec-maven-plugin:1.2:exec -X
> {noformat}
> I see
> {noformat}
> [DEBUG] Configuring mojo 'org.codehaus.mojo:exec-maven-plugin:1.2:exec' with 
> basic configurator -->
> [DEBUG]   (f) workingDirectory = /tmp/a/b
> [DEBUG] Making working directory '/tmp/a/b'.
> /tmp/a/b
> null
> {noformat}
> where I expected to see
> {noformat}
> [DEBUG] Configuring mojo 'org.codehaus.mojo:exec-maven-plugin:1.2:exec' with 
> basic configurator -->
> [DEBUG]   (f) workingDirectory = /tmp/a\b
> /tmp/a\b
> [/tmp/a\b/c]
> {noformat}
> I believe the guilty code is in 
> {{org.codehaus.plexus.component.configurator.converters.basic.FileConverter}}:
> {noformat}
> new File( str.replace( '\\', File.separatorChar ).replace( '/', 
> File.separatorChar ) )
> {noformat}
> should probably replace only / with \ and only on Windows. Not sure what 
> compatibility regressions there might be, if some POM written by a Windows 
> developer uses \ as the separator character for relative paths.

-- 
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