After chatting on the dev mailing list, I came up with the following example to illustrate that the context is not passed through to maven invocations resulting from maven:maven and maven:reactor.
In order to allow context variables to be passed through it was discussed adding a tag to support pushing through of specific variables rather than the whole context, hence the creation of maven:contextVariable which takes two arguments, 'var' for the name to store the value under, and 'value' for the value to add. I've added the line to the example below inside the reactor tag - to test behaviour prior to changes - comment it out.
<goal name="example:ensure-properties">
<j:if test="$
{empty(exampleProp)}
">
<i:ask question="Please enter some text for exampleProp?"
answer="exampleProp"/>
</j:if>
<maven:param-check value="$
{exampleProp}" fail="true" message="'exampleProp' must be specified"/>
</goal>
<goal name="example:goal"
prereqs="example:ensure-properties"
description="Goal">
<attainGoal name="example:goal-current-project"/>
</goal>
<goal name="example:goal-mp"
prereqs="example:ensure-properties"
description="Goal for the multiproject set">
<maven:pluginVar var="multiprojectIncludes" plugin="maven-multiproject-plugin" property="maven.multiproject.includes"/>
<maven:pluginVar var="multiprojectExcludes" plugin="maven-multiproject-plugin" property="maven.multiproject.excludes"/>
<maven:pluginVar var="multiprojectBasedir" plugin="maven-multiproject-plugin" property="maven.multiproject.basedir"/>
<maven:reactor basedir="${multiprojectBasedir}"
banner="Running example for:"
postProcessing="true"
goals="example:goal-current-project"
includes="${multiprojectIncludes}"
excludes="${multiprojectExcludes}"
ignoreFailures="false">
<maven:contextVariable var="exampleProp" value="${exampleProp}
"/>
</maven:reactor>
</goal>
<goal name="example:goal-current-project"
description="Calls the goal for current project, use example:goal or example:goal-mp rather than this goal directly">
<maven:param-check value="$
{exampleProp}" fail="true" message="'exampleProp' must be specified"/>
<ant:echo>exampleProp is ${exampleProp}
</ant:echo>
</goal>
After chatting on the dev mailing list, I came up with the following example to illustrate that the context is not passed through to maven invocations resulting from maven:maven and maven:reactor.
In order to allow context variables to be passed through it was discussed adding a tag to support pushing through of specific variables rather than the whole context, hence the creation of maven:contextVariable which takes two arguments, 'var' for the name to store the value under, and 'value' for the value to add. I've added the line to the example below inside the reactor tag - to test behaviour prior to changes - comment it out.
<goal name="example:ensure-properties">
{empty(exampleProp)}<j:if test="$
">
{exampleProp}" fail="true" message="'exampleProp' must be specified"/><i:ask question="Please enter some text for exampleProp?"
answer="exampleProp"/>
</j:if>
<maven:param-check value="$
</goal>
<goal name="example:goal"
prereqs="example:ensure-properties"
description="Goal">
<attainGoal name="example:goal-current-project"/>
</goal>
<goal name="example:goal-mp"
prereqs="example:ensure-properties"
description="Goal for the multiproject set">
<maven:pluginVar var="multiprojectIncludes" plugin="maven-multiproject-plugin" property="maven.multiproject.includes"/>
<maven:pluginVar var="multiprojectExcludes" plugin="maven-multiproject-plugin" property="maven.multiproject.excludes"/>
<maven:pluginVar var="multiprojectBasedir" plugin="maven-multiproject-plugin" property="maven.multiproject.basedir"/>
<maven:reactor basedir="${multiprojectBasedir}"
banner="Running example for:"
postProcessing="true"
goals="example:goal-current-project"
includes="${multiprojectIncludes}"
excludes="${multiprojectExcludes}"
ignoreFailures="false">
<maven:contextVariable var="exampleProp" value="${exampleProp}
"/>
</maven:reactor>
</goal>
<goal name="example:goal-current-project"
{exampleProp}" fail="true" message="'exampleProp' must be specified"/>description="Calls the goal for current project, use example:goal or example:goal-mp rather than this goal directly">
<maven:param-check value="$
<ant:echo>exampleProp is ${exampleProp}
</ant:echo>
</goal>