maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrus Adamchik (JIRA)" <j...@codehaus.org>
Subject [jira] Commented: (MSUREFIRE-139) Argline splits on spaces, should not when quoted
Date Sun, 01 Oct 2006 01:11:27 GMT
    [ http://jira.codehaus.org/browse/MSUREFIRE-139?page=comments#action_76216 ] 
            
Andrus Adamchik commented on MSUREFIRE-139:
-------------------------------------------

Yeah, this one is a bummer. Would really appreciate applying one of the solutions suggested
here.

> Argline splits on spaces, should not when quoted
> ------------------------------------------------
>
>                 Key: MSUREFIRE-139
>                 URL: http://jira.codehaus.org/browse/MSUREFIRE-139
>             Project: Maven 2.x Surefire Plugin
>          Issue Type: Bug
>    Affects Versions: 2.2
>            Reporter: Andrea Aime
>            Priority: Blocker
>             Fix For: 2.3
>
>
> I need to run surefire with the following argline:
> <argline>-javaagent:\"${user.home}\.m2\repository\aspectj\aspectjweaver\1.5.0\aspectjweaver-1.5.0.jar\"</argline>
> <argline>-javaagent:\"C:\Documents Settings\wolf\.m2\repository\aspectj\aspectjweaver\1.5.0\aspectjweaver-1.5.0.jar\"</argline>
> The problem is, ForkConfiguration splits the arguments blindly with StringUtils.split
and the above turns into three
> separate arguments:
> -javaagent:"C:\Documents
> and 
> Settings\wolf\.m2\repository\aspectj\aspectjweaver\1.5.0\aspectjweaver-1.5.0.jar"
> And the the vm complains it cannot find the jar C:\Documents.
> When quoted, the split should not happen!
> The following method proved to support quoting properly when splitting on spaces (I'm
using it in UmlGraph):
>  public static String[] tokenize(String s) {
> 	ArrayList<String> r = new ArrayList<String>();
> 	String remain = s;
> 	int n = 0, pos;
> 	remain = remain.trim();
> 	while (remain.length() > 0) {
> 	    if (remain.startsWith("\"")) {
> 		// Field in quotes
> 		pos = remain.indexOf('"', 1);
> 		if (pos == -1)
> 		    break;
> 		r.add(remain.substring(1, pos));
> 		if (pos + 1 < remain.length())
> 		    pos++;
> 	    } else {
> 		// Space-separated field
> 		pos = remain.indexOf(' ', 0);
> 		if (pos == -1) {
> 		    r.add(remain);
> 		    remain = "";
> 		} else
> 		    r.add(remain.substring(0, pos));
> 	    }
> 	    remain = remain.substring(pos + 1);
> 	    remain = remain.trim();
> 	    // - is used as a placeholder for empy fields
> 	    if (r.get(n).equals("-"))
> 		r.set(n, "");
> 	    n++;
> 	}
> 	return r.toArray(new String[0]);
>     }

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