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