brett 2004/07/05 14:01:49
Modified: src/java/org/apache/maven/plugin Tag: MAVEN-1_0-BRANCH
PluginManager.java
src/test/touchstone-build Tag: MAVEN-1_0-BRANCH maven.xml
xdocs Tag: MAVEN-1_0-BRANCH changes.xml
Log:
<maven:get/> and <maven:set/> initialise a plugin if it hasn't been already
Revision Changes Path
No revision
No revision
1.70.4.51 +46 -19 maven/src/java/org/apache/maven/plugin/PluginManager.java
Index: PluginManager.java
===================================================================
RCS file: /home/cvs/maven/src/java/org/apache/maven/plugin/PluginManager.java,v
retrieving revision 1.70.4.50
retrieving revision 1.70.4.51
diff -u -r1.70.4.50 -r1.70.4.51
--- PluginManager.java 2 Jul 2004 10:55:19 -0000 1.70.4.50
+++ PluginManager.java 5 Jul 2004 21:01:48 -0000 1.70.4.51
@@ -85,10 +85,11 @@
*/
/**
- * Plugin manager for MavenSession. <p>
+ * Plugin manager for MavenSession.
* <p/>
* The <code>PluginManager</code> deals with all aspects of a plugins lifecycle.
- * </p>
+ * <p/>
+ * This is <b>not</b> thread safe.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
* @author <a href="mailto:[EMAIL PROTECTED]">bob mcwhirter</a>
@@ -143,6 +144,9 @@
/** Plugins to be popped afterwards. */
private Set delayedPops = new HashSet();
+ /** The current goal attainment base context. */
+ private MavenJellyContext baseContext;
+
/**
* Default constructor.
*
@@ -491,7 +495,8 @@
*/
public void attainGoals( Project project, List goals ) throws Exception
{
- MavenJellyContext baseContext = new MavenJellyContext(
mavenSession.getRootContext() );
+ MavenJellyContext prevBaseContext = baseContext;
+ baseContext = new MavenJellyContext( mavenSession.getRootContext() );
baseContext.setInherit( true );
JellyUtils.populateVariables( baseContext, project.getContext() );
project.pushContext( baseContext );
@@ -639,6 +644,7 @@
cleanupAttainGoal( pluginSet );
delayedPops = oldDelayedPops;
project.popContext();
+ baseContext = prevBaseContext;
}
}
@@ -676,23 +682,30 @@
for ( Iterator j = pluginSet.iterator(); j.hasNext();)
{
JellyScriptHousing housing = ( JellyScriptHousing ) j.next();
- Project project = housing.getProject();
+ initialiseHousingPluginContext( housing, baseContext );
+ }
+ return pluginSet;
+ }
- MavenUtils.integrateMapInContext( housing.getPluginProperties(),
baseContext );
+ private MavenJellyContext initialiseHousingPluginContext( JellyScriptHousing
housing, MavenJellyContext baseContext ) throws Exception
+ {
+ Project project = housing.getProject();
- // TODO necessary to create a new one every time?
- MavenJellyContext pluginContext = new MavenJellyContext( baseContext );
- project.pushContext( pluginContext );
- pluginContext.setInherit( true );
- pluginContext.setVariable( "context", pluginContext );
- pluginContext.setVariable( "plugin", project );
- pluginContext.setVariable( "plugin.dir", housing.getPluginDirectory() );
- pluginContext.setVariable( "plugin.resources", new File(
housing.getPluginDirectory(), "plugin-resources" ) );
+ MavenUtils.integrateMapInContext( housing.getPluginProperties(),
baseContext );
- log.debug( "initialising plugin housing: " + project );
- runScript( housing, pluginContext );
- }
- return pluginSet;
+ // TODO necessary to create a new one every time?
+ MavenJellyContext pluginContext = new MavenJellyContext( baseContext );
+ project.pushContext( pluginContext );
+ pluginContext.setInherit( true );
+ pluginContext.setVariable( "context", pluginContext );
+ pluginContext.setVariable( "plugin", project );
+ pluginContext.setVariable( "plugin.dir", housing.getPluginDirectory() );
+ pluginContext.setVariable( "plugin.resources", new File(
housing.getPluginDirectory(), "plugin-resources" ) );
+
+ log.debug( "initialising plugin housing: " + project );
+ runScript( housing, pluginContext );
+
+ return pluginContext;
}
/**
@@ -875,7 +888,21 @@
if ( housing != null )
{
Project project = housing.getProject();
- return project.getContext();
+ if ( baseContext != project.getContext().getParent() )
+ {
+ log.debug("Plugin context for " + id + " not initialised for this
base context: initialising inside getPluginContext");
+ try {
+ return initialiseHousingPluginContext( housing, baseContext );
+ }
+ catch (Exception e) {
+ throw new MavenException("Error initialising plugin context",
e);
+ }
+ }
+ else
+ {
+ log.debug("Plugin context for " + id + " already initialised for
this base context");
+ return project.getContext();
+ }
}
throw new UnknownPluginException( id );
}
No revision
No revision
1.43.4.18 +19 -0 maven/src/test/touchstone-build/maven.xml
Index: maven.xml
===================================================================
RCS file: /home/cvs/maven/src/test/touchstone-build/maven.xml,v
retrieving revision 1.43.4.17
retrieving revision 1.43.4.18
diff -u -r1.43.4.17 -r1.43.4.18
--- maven.xml 13 May 2004 10:15:55 -0000 1.43.4.17
+++ maven.xml 5 Jul 2004 21:01:49 -0000 1.43.4.18
@@ -17,6 +17,7 @@
-->
<project
+ xmlns:multiproject="multiproject"
default="jar:jar"
xmlns:j="jelly:core"
xmlns:ant="jelly:ant"
@@ -68,6 +69,8 @@
-->
<goal name="touchstone-tests">
+ <attainGoal name="test-plugin-loading" />
+
<attainGoal name="touchstone-goal-A"/>
<maven:pluginVar var="checkValue" plugin="maven-touchstone-plugin"
property="touchstone_goal_A_from_plugin"/>
<j:if test="${checkValue == 'true'}">
@@ -838,6 +841,22 @@
<maven:get var="checkValue" plugin="maven-touchstone-plugin"
property="touchstone_goal_B_from_plugin"/>
<j:if test="${checkValue != 'blah'}">
<fail message=""> maven:set failed </fail>
+ </j:if>
+ </goal>
+
+ <goal name="test-plugin-loading" prereqs="xdoc:init">
+ <maven:get plugin="maven-xdoc-plugin" property="maven.xdoc.theme" var="d" />
+ <j:if test="${d != 'theme'}">
+ <fail>maven.xdoc.theme in xdoc plugin is not 'theme', is '${d}'</fail>
+ </j:if>
+ <multiproject:dependency-handle />
+ <maven:get plugin="maven-multiproject-plugin"
property="maven.multiproject.includes" var="d" />
+ <j:if test="${d != '*/project.xml'}">
+ <fail>maven.multiproject.includes in multiproject plugin is not
'*/project.xml', is '${d}'</fail>
+ </j:if>
+ <maven:get plugin="maven-dist-plugin" property="maven.dist.tar.executable"
var="d" />
+ <j:if test="${d != 'tar'}">
+ <fail>maven.dist.tar.executable in dist plugin is not 'tar', is '${d}'</fail>
</j:if>
</goal>
</project>
No revision
No revision
1.14.4.29 +1 -0 maven/xdocs/changes.xml
Index: changes.xml
===================================================================
RCS file: /home/cvs/maven/xdocs/changes.xml,v
retrieving revision 1.14.4.28
retrieving revision 1.14.4.29
diff -u -r1.14.4.28 -r1.14.4.29
--- changes.xml 1 Jul 2004 14:03:00 -0000 1.14.4.28
+++ changes.xml 5 Jul 2004 21:01:49 -0000 1.14.4.29
@@ -25,6 +25,7 @@
</properties>
<body>
<release version="1.0-final-SNAPSHOT" date="in CVS">
+ <action dev="brett" type="fix"><maven:get/> now initialises the plugin
if it has not already been loaded, removing the need for dependency handles</action>
<action dev="brett" type="fix" issue="MAVEN-1188">Check last modified
timestamp as well as conditional GET in case the server time is behind the local
time</action>
<action dev="brett" type="fix" issue="MAVEN-1343">Bugfixes for new httpclient
based downloading (incorrect timestamps)</action>
<action dev="brett" type="fix" issue="MAVEN-1353">Handle cross site
redirects</action>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]