[ 
https://issues.apache.org/jira/browse/MNG-5957?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15103093#comment-15103093
 ] 

Mario Krizmanic commented on MNG-5957:
--------------------------------------

Maybe the change seems to be a bit complicated but it really isn't. The current 
version splits goals using comma as the separator {code}String[] mojoGoals = 
StringUtils.split( goals, "," );{code} while the pull request uses the regular 
expression that matches the goals (similar as the current version) and optional 
additional configurations: 
{code}
String goalRegex = "(?<goal>[^:\\[,\\s]+(?::[^:\\[,\\s]+)\{2,3\})";

// match [<configuration>]
String configurationRegex = 
"(?:\\[(?<configuration>(?:[^\\]]|(?:(?<=/)\\]))*)\\])?";

Pattern pattern = Pattern.compile( goalRegex + configurationRegex );
Matcher matcher = pattern.matcher( goals );
{code}
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:
{code}
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;
}
{code}

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?

> Configuration within lifecycle phase
> ------------------------------------
>
>                 Key: MNG-5957
>                 URL: https://issues.apache.org/jira/browse/MNG-5957
>             Project: Maven
>          Issue Type: Improvement
>          Components: core
>    Affects Versions: 3.3.9
>            Reporter: Mario Krizmanic
>
> The lifecycle phase can be configured as a comma-separated list of plugins 
> specified with the following data: 
> {code}<groupId>:<artifactId>:<version>:<goal>{code} that are not enough for 
> my plugin.
> My plugin has to reconfigure the default lifecycle using other plugins with 
> dedicated configuration different from their defaults'.
> So, I'd propose to enhance the lifecycle phase parsing to support additional 
> configuration as: 
> {code}<groupId>:<artifactId>:<version>:<goal>[<configuration>]{code}
> Finally, the components.xml would support configurations like: 
> {code:xml}<component-set>
>     <components>
>         <component>
>             <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
>             ...
>             <configuration>
>                 <lifecycles>
>                     <lifecycle>
>                         <id>default</id>
>                         <phases>
>                             <process-resources>
>                                 
> org.apache.maven.plugins:maven-resources-plugin:resources
>                             </process-resources>
>                             ...
>                             <install>
>                                 <![CDATA[
>                                 
> org.apache.maven.plugins:maven-install-plugin:install,
>                                 org.apache.felix:maven-bundle-plugin:install[
>                                         &lt;supportedProjectTypes&gt;
>                                             
> &lt;supportedProjectType&gt;buzz&lt;/supportedProjectType&gt;
>                                         &lt;/supportedProjectTypes&gt;]]]>
>                             </install>
> ...{code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to