Index: src/java/org/apache/maven/jelly/MavenJellyContext.java
===================================================================
--- src/java/org/apache/maven/jelly/MavenJellyContext.java (revision 170616)
+++ src/java/org/apache/maven/jelly/MavenJellyContext.java (working copy)
@@ -17,6 +17,8 @@
* ====================================================================
*/
+import com.werken.werkz.Goal;
+import com.werken.werkz.Session;
import com.werken.werkz.WerkzProject;
import org.apache.commons.grant.GrantProject;
@@ -36,6 +38,7 @@
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
@@ -52,7 +55,7 @@
* @author bob mcwhirter
* @author Jason van Zyl
*
- * @version $Id: MavenJellyContext.java,v 1.35.4.11 2004/07/01 12:39:05 brett Exp $
+ * @version $Id$
*/
public class MavenJellyContext
extends JellyContext
@@ -712,5 +715,18 @@
setVariable( var, f.getAbsolutePath() );
}
}
+
+
+ private HashMap attainedGoals = new HashMap();
+
+ public synchronized Session attainedAt(Goal goal) {
+ return (Session) (this.attainedGoals.containsKey(goal) ?
+ this.attainedGoals.get(goal) : null);
+ }
+
+ public synchronized void setAttained(Goal goal, Session session) {
+ this.attainedGoals.put(goal, session);
+ }
+
}
Index: src/java/org/apache/maven/jelly/tags/werkz/MavenGoalTag.java
===================================================================
--- src/java/org/apache/maven/jelly/tags/werkz/MavenGoalTag.java (revision 170616)
+++ src/java/org/apache/maven/jelly/tags/werkz/MavenGoalTag.java (working copy)
@@ -25,6 +25,8 @@
import org.apache.commons.jelly.JellyTagException;
import org.apache.commons.jelly.XMLOutput;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.maven.MavenConstants;
import org.apache.maven.jelly.MavenJellyContext;
import org.apache.maven.plugin.JellyScriptHousing;
@@ -37,13 +39,15 @@
* they are being run in the order whereby the first definition wins.
*
* @author Brett Porter
- * @version $Id: MavenGoalTag.java,v 1.2.4.12 2004/06/26 14:52:05 dion Exp $
+ * @version $Id$
*/
public class MavenGoalTag extends GoalTag
{
// ------------------------------------------------------------
// C O N S T R U C T O R S
// ------------------------------------------------------------
+
+ protected final Log logger = LogFactory.getLog(getClass());
/**
* Construct.
@@ -68,7 +72,7 @@
super.doTag( output );
goal = getProject().getGoal( getName() );
JellyScriptHousing currentHousing = ( JellyScriptHousing ) getContext().getVariable( PluginManager.PLUGIN_HOUSING );
- goal.setAction( new MavenGoalAction( currentHousing ) );
+ goal.setAction( new MavenGoalAction( currentHousing, goal ) );
}
}
@@ -85,11 +89,13 @@
public class MavenGoalAction implements Action
{
private final JellyScriptHousing housing;
+ private final Goal goal;
- public MavenGoalAction( JellyScriptHousing housing )
+ public MavenGoalAction( JellyScriptHousing housing, Goal goal )
{
super();
this.housing = housing;
+ this.goal = goal;
if ( housing == null )
{
throw new NullPointerException( "Plugin Housing can not be null" );
@@ -99,7 +105,13 @@
public void performAction( Session session ) throws Exception
{
MavenJellyContext oldContext = ( MavenJellyContext ) getContext();
-
+ Session attainedAt = oldContext.attainedAt(this.goal);
+ if ( attainedAt != null ) {
+ logger.info("Skipping goal " + getName() + " as it was already run in this context!" );
+ logger.debug("Context = " + oldContext + ", session that ran it=" + attainedAt + ", this session = " + session );
+ return;
+ }
+ oldContext.setAttained( this.goal, session );
//GoalToJellyScriptHousingMapper mapper = ( GoalToJellyScriptHousingMapper ) session.getAttribute(
//PluginManager.GOAL_MAPPER );
//JellyScriptHousing housing = mapper.getPluginHousing( getName() );
Index: src/java/org/apache/maven/jelly/tags/werkz/MavenAttainGoalTag.java
===================================================================
--- src/java/org/apache/maven/jelly/tags/werkz/MavenAttainGoalTag.java (revision 170616)
+++ src/java/org/apache/maven/jelly/tags/werkz/MavenAttainGoalTag.java (working copy)
@@ -39,7 +39,7 @@
* Replacement for werkz's AttainGoalTag which will lazy initialise goals.
*
* @author Brett Porter
- * @version $Id: MavenAttainGoalTag.java,v 1.2.2.10 2004/11/06 05:51:16 brett Exp $
+ * @version $Id$
*/
public class MavenAttainGoalTag extends WerkzTagSupport
{
@@ -114,7 +114,6 @@
GoalToJellyScriptHousingMapper mapper = ( GoalToJellyScriptHousingMapper ) getSession().getAttribute(
PluginManager.GOAL_MAPPER );
PluginManager pluginManager = ( PluginManager ) getSession().getAttribute( PluginManager.PLUGIN_MANAGER );
-
Set pluginSet;
try
{