Github user mkrizmanic commented on the pull request:

    https://github.com/apache/maven/pull/76#issuecomment-173891459
  
    Maybe the change seems to be a bit complicated but it really isn't. The 
current version splits goals using comma as the separator
    ```java
    String[] mojoGoals = StringUtils.split( goals, "," );
    ```
    while the pull request uses the regular expression that matches the goals 
(similar as the current version) and optional additional configurations:
    ```java
    String goalRegex = "(?<goal>[^:\\[,\\s]+(?::[^:\\[,\\s]+)\{2,3\})";
    
    // match [<configuration>]
    String configurationRegex = 
"(?:\\[(?<configuration>(?:[^\\]]|(?:(?<=/)\\]))*)\\])?";
    
    Pattern pattern = Pattern.compile( goalRegex + configurationRegex );
    Matcher matcher = pattern.matcher( goals );
    ```
    The goal may be compounded from 3 or 4 non-whitespace and non-comma 
character arrays delimited with colon - because the 
DefaultLifecyclePluginAnalyzer class requires them in parseGoalSpec method:
    ```java
    private GoalSpec parseGoalSpec( String goalSpec )
    {
        GoalSpec gs = new GoalSpec();
    
        String[] p = StringUtils.split( goalSpec.trim(), ":" );
    
        if ( p.length == 3 )
        {
            // <groupId>:<artifactId>:<goal>
            gs.groupId = p[0];
            gs.artifactId = p[1];
            gs.goal = p[2];
        }
        else if ( p.length == 4 )
        {
            // <groupId>:<artifactId>:<version>:<goal>
            gs.groupId = p[0];
            gs.artifactId = p[1];
            gs.version = p[2];
            gs.goal = p[3];
        }
        else
        {
            // invalid
            gs = null;
        }
    
        return gs;
    }
    ```
    The configuration regex may contain any character except ‘]' that may be 
escaped ‘/]'.
    The goals parsing is changed within the LifecyclePhase because it 
shouldn’t split goals only using the commas because the commas may be a part 
of an additional configuration.
    WDYT?


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to