maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jesse Glick (JIRA)" <j...@codehaus.org>
Subject [jira] Reopened: (MNG-5035) \ -> / on Unix for java.io.File-typed mojo param
Date Mon, 07 Mar 2011 17:18:24 GMT

     [ 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

        

Mime
View raw message