[ 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[ > <supportedProjectTypes> > > <supportedProjectType>buzz</supportedProjectType> > </supportedProjectTypes>]]]> > </install> > ...{code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)