maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (MNG-5957) Configuration within lifecycle phase
Date Fri, 22 Jan 2016 11:33:39 GMT

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

ASF GitHub Bot commented on MNG-5957:
-------------------------------------

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?


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

Mime
View raw message