Browse Source

Continue migration of ProjectManager to Workspace

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269254 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Donald 24 years ago
parent
commit
45fd8b0339
9 changed files with 22 additions and 775 deletions
  1. +10
    -10
      proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java
  2. +4
    -4
      proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/Embeddor.java
  3. +0
    -1
      proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/DefaultExecutionFrame.java
  4. +0
    -439
      proposal/myrmidon/src/java/org/apache/myrmidon/components/manager/DefaultProjectManager.java
  5. +0
    -50
      proposal/myrmidon/src/java/org/apache/myrmidon/components/manager/LogTargetToListenerAdapter.java
  6. +0
    -51
      proposal/myrmidon/src/java/org/apache/myrmidon/components/manager/ProjectEntry.java
  7. +0
    -160
      proposal/myrmidon/src/java/org/apache/myrmidon/components/manager/ProjectListenerSupport.java
  8. +0
    -51
      proposal/myrmidon/src/java/org/apache/myrmidon/components/manager/ProjectManager.java
  9. +8
    -9
      proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java

+ 10
- 10
proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java View File

@@ -27,12 +27,12 @@ import org.apache.myrmidon.components.converter.ConverterRegistry;
import org.apache.myrmidon.components.converter.MasterConverter;
import org.apache.myrmidon.components.deployer.Deployer;
import org.apache.myrmidon.components.deployer.DeploymentException;
import org.apache.myrmidon.components.role.RoleManager;
import org.apache.myrmidon.components.executor.Executor;
import org.apache.myrmidon.components.manager.ProjectManager;
import org.apache.myrmidon.components.workspace.Workspace;
import org.apache.myrmidon.components.model.Project;
import org.apache.myrmidon.components.role.RoleManager;
import org.apache.myrmidon.components.type.TypeFactory;
import org.apache.myrmidon.components.type.TypeManager;
import org.apache.myrmidon.components.model.Project;

/**
* Default implementation of Embeddor.
@@ -122,13 +122,13 @@ public class DefaultEmbeddor
return builder;
}

public ProjectManager createProjectManager( final Project project,
final Parameters parameters )
public Workspace createWorkspace( final Project project,
final Parameters parameters )
throws Exception
{
final String component = getParameter( ProjectManager.ROLE );
final ProjectManager projectManager =
(ProjectManager)createComponent( component, ProjectManager.class );
final String component = getParameter( Workspace.ROLE );
final Workspace projectManager =
(Workspace)createComponent( component, Workspace.class );

setupLogger( projectManager );

@@ -240,8 +240,8 @@ public class DefaultEmbeddor
//"org.apache.myrmidon.components.executor.DefaultExecutor" );
//"org.apache.myrmidon.components.executor.PrintingExecutor" );
"org.apache.myrmidon.components.executor.AspectAwareExecutor" );
defaults.setParameter( ProjectManager.ROLE,
"org.apache.myrmidon.components.manager.DefaultProjectManager" );
defaults.setParameter( Workspace.ROLE,
"org.apache.myrmidon.components.workspace.DefaultWorkspace" );
defaults.setParameter( Deployer.ROLE,
"org.apache.myrmidon.components.deployer.DefaultDeployer" );
defaults.setParameter( Configurer.ROLE,


+ 4
- 4
proposal/myrmidon/src/java/org/apache/myrmidon/components/embeddor/Embeddor.java View File

@@ -15,7 +15,7 @@ import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.myrmidon.components.model.Project;
import org.apache.myrmidon.components.manager.ProjectManager;
import org.apache.myrmidon.components.workspace.Workspace;

/**
* Interface through which you embed Myrmidon into applications.
@@ -36,12 +36,12 @@ public interface Embeddor
throws Exception;

/**
* Create a ProjectManager for a particular project.
* Create a Workspace for a particular project.
*
* @param project the root project
* @param defines the defines in project
* @return the ProjectManager
* @return the Workspace
*/
ProjectManager createProjectManager( Project project, Parameters parameters )
Workspace createWorkspace( Project project, Parameters parameters )
throws Exception;
}

+ 0
- 1
proposal/myrmidon/src/java/org/apache/myrmidon/components/executor/DefaultExecutionFrame.java View File

@@ -23,7 +23,6 @@ import org.apache.myrmidon.components.converter.ConverterRegistry;
import org.apache.myrmidon.components.converter.MasterConverter;
import org.apache.myrmidon.components.deployer.Deployer;
import org.apache.myrmidon.components.executor.Executor;
import org.apache.myrmidon.components.manager.ProjectManager;
import org.apache.myrmidon.components.role.RoleManager;
import org.apache.myrmidon.components.type.TypeManager;



+ 0
- 439
proposal/myrmidon/src/java/org/apache/myrmidon/components/manager/DefaultProjectManager.java View File

@@ -1,439 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.myrmidon.components.manager;

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;
import org.apache.avalon.framework.activity.Disposable;
import org.apache.avalon.framework.activity.Initializable;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.ComponentManager;
import org.apache.avalon.framework.component.DefaultComponentManager;
import org.apache.avalon.framework.component.Composable;
import org.apache.avalon.framework.configuration.Configuration;
import org.apache.avalon.framework.logger.AbstractLoggable;
import org.apache.avalon.framework.parameters.ParameterException;
import org.apache.avalon.framework.parameters.Parameterizable;
import org.apache.avalon.framework.parameters.Parameters;
import org.apache.log.Logger;
import org.apache.myrmidon.api.DefaultTaskContext;
import org.apache.myrmidon.api.TaskContext;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.components.executor.DefaultExecutionFrame;
import org.apache.myrmidon.components.executor.ExecutionFrame;
import org.apache.myrmidon.components.executor.Executor;
import org.apache.myrmidon.framework.Condition;
import org.apache.myrmidon.components.deployer.DefaultDeployer;
import org.apache.myrmidon.components.deployer.Deployer;
import org.apache.myrmidon.components.deployer.DeploymentException;
import org.apache.myrmidon.components.model.Project;
import org.apache.myrmidon.components.model.TypeLib;
import org.apache.myrmidon.components.model.Target;
import org.apache.myrmidon.components.type.TypeManager;
import org.apache.myrmidon.listeners.ProjectListener;

/**
* This is the default implementation of ProjectEngine.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class DefaultProjectManager
extends AbstractLoggable
implements ProjectManager, Composable, Parameterizable, Initializable
{
private Executor m_executor;
private ProjectListenerSupport m_listenerSupport = new ProjectListenerSupport();
private ComponentManager m_componentManager;
private Parameters m_parameters;
private Project m_project;
private TaskContext m_baseContext;
private HashMap m_entrys = new HashMap();
private TypeManager m_typeManager;

/**
* Add a listener to project events.
*
* @param listener the listener
*/
public void addProjectListener( final ProjectListener listener )
{
m_listenerSupport.addProjectListener( listener );
}

/**
* Remove a listener from project events.
*
* @param listener the listener
*/
public void removeProjectListener( final ProjectListener listener )
{
m_listenerSupport.removeProjectListener( listener );
}

/**
* Retrieve relevent services needed for engine.
*
* @param componentManager the ComponentManager
* @exception ComponentException if an error occurs
*/
public void compose( final ComponentManager componentManager )
throws ComponentException
{
m_componentManager = componentManager;

m_typeManager = (TypeManager)componentManager.lookup( TypeManager.ROLE );
m_executor = (Executor)componentManager.lookup( Executor.ROLE );
m_project = (Project)componentManager.lookup( Project.ROLE );
}

public void parameterize( final Parameters parameters )
throws ParameterException
{
m_parameters = parameters;
}

public void initialize()
throws Exception
{
m_baseContext = createBaseContext();
}

/**
* Execute a target in a particular project.
* Execute in the project context.
*
* @param project the Project
* @param target the name of the target
* @exception TaskException if an error occurs
*/
public void executeProject( final Project project, final String target )
throws TaskException
{
final ProjectEntry entry = getProjectEntry( project );

m_listenerSupport.projectStarted();

executeTarget( "<init>", project.getImplicitTarget(), entry.getFrame() );

execute( project, target, entry );

m_listenerSupport.projectFinished();
}


private TaskContext createBaseContext()
throws TaskException
{
final TaskContext context = new DefaultTaskContext();

final String[] names = m_parameters.getNames();
for( int i = 0; i < names.length; i++ )
{
final String value = m_parameters.getParameter( names[ i ], null );
context.setProperty( names[ i ], value );
}

//Add system properties so that they overide user-defined properties
addToContext( context, System.getProperties() );

return context;
}

private File findTypeLib( final String libraryName )
throws TaskException
{
//TODO: In future this will be expanded to allow
//users to specify search path or automagically
//add entries to lib path (like user specific or
//workspace specific)
final String name = libraryName.replace( '/', File.separatorChar ) + ".atl";

final String home = System.getProperty( "myrmidon.home" );
final File homeDir = new File( home + File.separatorChar + "ext" );
final File library = new File( homeDir, name );

if( library.exists() )
{
if( !library.canRead() )
{
throw new TaskException( "Unable to read library at " + library );
}
else
{
return library;
}
}

throw new TaskException( "Unable to locate Type Library " + libraryName );
}

private void deployTypeLib( final Deployer deployer, final Project project )
throws TaskException
{
final TypeLib[] typeLibs = project.getTypeLibs();

for( int i = 0; i < typeLibs.length; i++ )
{
final TypeLib typeLib = typeLibs[ i ];
final File file = findTypeLib( typeLib.getLibrary() );

try
{
if( null == typeLib.getRole() )
{
deployer.deploy( file );
}
else
{
deployer.deployType( typeLib.getRole(), typeLib.getName(), file );
}
}
catch( final DeploymentException de )
{
throw new TaskException( "Error deploying type library " +
typeLib + " at " + file, de );
}
}
}

private ExecutionFrame createExecutionFrame( final Project project )
throws TaskException
{
final TaskContext context = new DefaultTaskContext( m_baseContext );
context.setProperty( TaskContext.BASE_DIRECTORY, project.getBaseDirectory() );

//Create per frame ComponentManager
final DefaultComponentManager componentManager =
new DefaultComponentManager( m_componentManager );

//Add in child type manager so each frame can register different
//sets of tasks etc
final TypeManager typeManager = m_typeManager.createChildTypeManager();
componentManager.put( TypeManager.ROLE, typeManager );

//We need to create a new deployer so that it deploys
//to project specific TypeManager
final DefaultDeployer deployer = new DefaultDeployer();
deployer.setLogger( getLogger() );

try { deployer.compose( componentManager ); }
catch( final ComponentException ce )
{
throw new TaskException( "Error configuring deployer", ce );
}

//HACK: Didn't call initialize because Deployer contained in Embeddor
// Already initialized and this would be reduendent
//deployer.initialize();

componentManager.put( Deployer.ROLE, deployer );

deployTypeLib( deployer, project );

//We need to place projects and ProjectManager
//in ComponentManager so as to support project-local call()
componentManager.put( ProjectManager.ROLE, this );
componentManager.put( Project.ROLE, project );

final String[] names = project.getProjectNames();
for( int i = 0; i < names.length; i++ )
{
final String name = names[ i ];
final Project other = project.getProject( name );
componentManager.put( Project.ROLE + "/" + name, other );
}

final DefaultExecutionFrame frame = new DefaultExecutionFrame();
try
{

frame.setLogger( getLogger() );
frame.contextualize( context );
frame.compose( componentManager );
}
catch( final Exception e )
{
throw new TaskException( "Error setting up ExecutionFrame", e );
}

return frame;
}

private ProjectEntry getProjectEntry( final Project project )
throws TaskException
{
ProjectEntry entry = (ProjectEntry)m_entrys.get( project );
if( null == entry )
{
final ExecutionFrame frame = createExecutionFrame( project );
entry = new ProjectEntry( project, frame );
m_entrys.put( project, entry );
}

return entry;
}

private Project getProject( final String name, final Project project )
throws TaskException
{
final Project other = project.getProject( name );
if( null == other )
{
//TODO: Fix this so location information included in description
throw new TaskException( "Project '" + name + "' not found." );
}

return other;
}

/**
* Helper method to execute a target.
*
* @param project the Project
* @param target the name of the target
* @param context the context
* @param done the list of targets already executed in current run
* @exception TaskException if an error occurs
*/
private void execute( final Project project,
final String targetName,
final ProjectEntry entry )
throws TaskException
{
final int index = targetName.indexOf( "->" );
if( -1 != index )
{
final String name = targetName.substring( 0, index );
final String otherTargetName = targetName.substring( index + 2 );

final Project otherProject = getProject( name, project );
final ProjectEntry otherEntry = getProjectEntry( otherProject );

//Execute target in referenced project
execute( otherProject, otherTargetName, otherEntry );
return;
}

final Target target = project.getTarget( targetName );
if( null == target )
{
throw new TaskException( "Unable to find target " + targetName );
}

//add target to list of targets executed
entry.completeTarget( targetName );

//execute all dependencies
final String[] dependencies = target.getDependencies();
for( int i = 0; i < dependencies.length; i++ )
{
if( !entry.isTargetCompleted( dependencies[ i ] ) )
{
execute( project, dependencies[ i ], entry );
}
}

//notify listeners
m_listenerSupport.targetStarted( targetName );

executeTarget( targetName, target, entry.getFrame() );

//notify listeners
m_listenerSupport.targetFinished();
}

/**
* Method to execute a particular target instance.
*
* @param targetName the name of target
* @param target the target
* @param context the context in which to execute
* @exception TaskException if an error occurs
*/
private void executeTarget( final String name,
final Target target,
final ExecutionFrame frame )
throws TaskException
{
//check the condition associated with target.
//if it is not satisfied then skip target
final Condition condition = target.getCondition();
if( null != condition )
{
if( false == condition.evaluate( frame.getContext() ) )
{
getLogger().debug( "Skipping target " + name +
" as it does not satisfy condition" );
return;
}
}

getLogger().debug( "Executing target " + name );

//frame.getContext().setProperty( Project.TARGET, target );

//execute all tasks assciated with target
final Configuration[] tasks = target.getTasks();
for( int i = 0; i < tasks.length; i++ )
{
executeTask( tasks[ i ], frame );
}
}

/**
* Execute a task.
*
* @param task the task definition
* @param context the context
* @exception TaskException if an error occurs
*/
private void executeTask( final Configuration task, final ExecutionFrame frame )
throws TaskException
{
final String name = task.getName();
getLogger().debug( "Executing task " + name );

//is setting name even necessary ???
frame.getContext().setProperty( TaskContext.NAME, name );

//notify listeners
m_listenerSupport.taskStarted( name );

//run task
m_executor.execute( task, frame );

//notify listeners task has ended
m_listenerSupport.taskFinished();
}

/**
* Helper method to add values to a context
*
* @param context the context
* @param map the map of names->values
*/
private void addToContext( final TaskContext context, final Map map )
throws TaskException
{
final Iterator keys = map.keySet().iterator();

while( keys.hasNext() )
{
final String key = (String)keys.next();
final Object value = map.get( key );
context.setProperty( key, value );
}
}
}

+ 0
- 50
proposal/myrmidon/src/java/org/apache/myrmidon/components/manager/LogTargetToListenerAdapter.java View File

@@ -1,50 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.myrmidon.components.manager;

import org.apache.log.LogEvent;
import org.apache.log.LogTarget;
import org.apache.myrmidon.listeners.ProjectListener;

/**
* Adapter between Avalon LogKit and Project listener interfaces.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class LogTargetToListenerAdapter
implements LogTarget
{
private final ProjectListener m_listener;

/**
* Constructor taking listener to convert to.
*
* @param listener the ProjectListener
*/
public LogTargetToListenerAdapter( final ProjectListener listener )
{
m_listener = listener;
}

/**
* Process a log event.
*
* @param event the event
*/
public void processEvent( final LogEvent event )
{
if( null == event.getThrowable() )
{
m_listener.log( event.getMessage() );
}
else
{
m_listener.log( event.getMessage(), event.getThrowable() );
}
}
}

+ 0
- 51
proposal/myrmidon/src/java/org/apache/myrmidon/components/manager/ProjectEntry.java View File

@@ -1,51 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.myrmidon.components.manager;

import java.util.ArrayList;
import org.apache.myrmidon.components.model.Project;
import org.apache.myrmidon.components.executor.ExecutionFrame;

/**
* This contains detaisl for each project that is managed by ProjectManager.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public final class ProjectEntry
{
private final Project m_project;
private final ExecutionFrame m_frame;
private final ArrayList m_targetsCompleted = new ArrayList();

public ProjectEntry( final Project project,
final ExecutionFrame frame )
{
m_project = project;
m_frame = frame;
}

public Project getProject()
{
return m_project;
}

public ExecutionFrame getFrame()
{
return m_frame;
}

public boolean isTargetCompleted( final String target )
{
return m_targetsCompleted.contains( target );
}

public void completeTarget( final String target )
{
m_targetsCompleted.add( target );
}
}

+ 0
- 160
proposal/myrmidon/src/java/org/apache/myrmidon/components/manager/ProjectListenerSupport.java View File

@@ -1,160 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.myrmidon.components.manager;

import org.apache.myrmidon.listeners.ProjectListener;

/**
* Support for the project listener event dispatching.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class ProjectListenerSupport
implements ProjectListener
{
private ProjectListener[] m_listeners = new ProjectListener[ 0 ];

/**
* Add an extra project listener that wants to receive notification of listener events.
*
* @param listener the listener
*/
public void addProjectListener( final ProjectListener listener )
{
final ProjectListener[] listeners = new ProjectListener[ m_listeners.length + 1 ];
System.arraycopy( m_listeners, 0, listeners, 0, m_listeners.length );
listeners[ m_listeners.length ] = listener;
m_listeners = listeners;
}

/**
* Remove a project listener that wants to receive notification of listener events.
*
* @param listener the listener
*/
public void removeProjectListener( final ProjectListener listener )
{
int found = -1;

for( int i = 0; i < m_listeners.length; i++ )
{
if( listener == m_listeners[ i ] )
{
found = i;
break;
}
}

if( -1 == found ) return;

final ProjectListener[] listeners = new ProjectListener[ m_listeners.length - 1 ];
System.arraycopy( m_listeners, 0, listeners, 0, found );

final int count = m_listeners.length - found - 1;
System.arraycopy( m_listeners, found, listeners, found + 1, count );

m_listeners = listeners;
}

/**
* Fire a projectStarted event.
*/
public void projectStarted()
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].projectStarted();
}
}

/**
* Fire a projectFinished event.
*/
public void projectFinished()
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].projectFinished();
}
}

/**
* Fire a targetStarted event.
*
* @param targetName the name of target
*/
public void targetStarted( String targetName )
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].targetStarted( targetName );
}
}

/**
* Fire a targetFinished event.
*/
public void targetFinished()
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].targetFinished();
}
}

/**
* Fire a targetStarted event.
*
* @param targetName the name of target
*/
public void taskStarted( String taskName )
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].taskStarted( taskName );
}
}

/**
* Fire a taskFinished event.
*/
public void taskFinished()
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].taskFinished();
}
}

/**
* Fire a log event.
*
* @param message the log message
*/
public void log( String message )
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].log( message );
}
}

/**
* Fire a log event.
*
* @param message the log message
* @param throwable the throwable to be logged
*/
public void log( String message, Throwable throwable )
{
for( int i = 0; i < m_listeners.length; i++ )
{
m_listeners[ i ].log( message, throwable );
}
}
}

+ 0
- 51
proposal/myrmidon/src/java/org/apache/myrmidon/components/manager/ProjectManager.java View File

@@ -1,51 +0,0 @@
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.myrmidon.components.manager;

import java.util.Map;
import org.apache.avalon.framework.component.Component;
import org.apache.myrmidon.api.TaskException;
import org.apache.myrmidon.components.model.Project;
import org.apache.myrmidon.listeners.ProjectListener;

/**
* This is the abstraction through which Projects are executed.
* TODO: Think of better name
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public interface ProjectManager
extends Component
{
String ROLE = "org.apache.myrmidon.components.manager.ProjectManager";

/**
* Add a listener to project events.
*
* @param listener the listener
*/
void addProjectListener( ProjectListener listener );

/**
* Remove a listener from project events.
*
* @param listener the listener
*/
void removeProjectListener( ProjectListener listener );

/**
* Execute a target in a particular project.
*
* @param project the Project
* @param target the name of the target
* @param defines the defines
* @exception TaskException if an error occurs
*/
void executeProject( Project project, String target )
throws TaskException;
}

+ 8
- 9
proposal/myrmidon/src/java/org/apache/myrmidon/frontends/CLIMain.java View File

@@ -40,8 +40,8 @@ import org.apache.myrmidon.components.builder.ProjectBuilder;
import org.apache.myrmidon.components.executor.Executor;
import org.apache.myrmidon.components.embeddor.Embeddor;
import org.apache.myrmidon.components.embeddor.DefaultEmbeddor;
import org.apache.myrmidon.components.manager.LogTargetToListenerAdapter;
import org.apache.myrmidon.components.manager.ProjectManager;
import org.apache.myrmidon.components.workspace.LogTargetToListenerAdapter;
import org.apache.myrmidon.components.workspace.Workspace;
import org.apache.myrmidon.components.model.Project;
import org.apache.myrmidon.listeners.ProjectListener;

@@ -353,11 +353,10 @@ public class CLIMain
while( true )
{
//actually do the build ...
final ProjectManager manager =
embeddor.createProjectManager( project, m_defines );
manager.addProjectListener( listener );
final Workspace workspace = embeddor.createWorkspace( project, m_defines );
workspace.addProjectListener( listener );

doBuild( manager, project, m_targets );
doBuild( workspace, project, m_targets );

if( !incremental ) break;

@@ -385,7 +384,7 @@ public class CLIMain
* @param project the project
* @param targets the targets to build as passed by CLI
*/
private void doBuild( final ProjectManager manager,
private void doBuild( final Workspace workspace,
final Project project,
final ArrayList targets )
{
@@ -396,13 +395,13 @@ public class CLIMain
//if we didn't specify a target on CLI then choose default
if( 0 == targetCount )
{
manager.executeProject( project, project.getDefaultTargetName() );
workspace.executeProject( project, project.getDefaultTargetName() );
}
else
{
for( int i = 0; i < targetCount; i++ )
{
manager.executeProject( project, (String)targets.get( i ) );
workspace.executeProject( project, (String)targets.get( i ) );
}
}
}


Loading…
Cancel
Save