You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by ad...@apache.org on 2002/07/02 04:18:09 UTC
cvs commit: jakarta-ant-myrmidon/framework/src/java/org/apache/myrmidon/framework ExecuteTarget.java
adammurdoch 2002/07/01 19:18:09
Modified: container/src/java/org/apache/myrmidon/components/embeddor
DefaultEmbeddor.java
container/src/java/org/apache/myrmidon/interfaces
EmbeddedAnt.java
container/src/java/org/apache/myrmidon/interfaces/embeddor
Embeddor.java
container/src/test/org/apache/myrmidon/components/embeddor/test
DefaultEmbeddorTest.java
framework/src/java/org/apache/myrmidon/framework
ExecuteTarget.java
Log:
- Renamed Embeddor.setupListener() to createListener(), for better match with
the other Embeddor methods.
- Changed Embeddor.execute() to take a list of targets to execute. Allows
execution of more than one target in the same workspace.
- Frontend now executes all targets given on the command-line in the same
workspace, rather than creating a new workspace for each target.
Revision Changes Path
1.115 +17 -4 jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java
Index: DefaultEmbeddor.java
===================================================================
RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/components/embeddor/DefaultEmbeddor.java,v
retrieving revision 1.114
retrieving revision 1.115
diff -u -r1.114 -r1.115
--- DefaultEmbeddor.java 30 Jun 2002 11:09:11 -0000 1.114
+++ DefaultEmbeddor.java 2 Jul 2002 02:18:09 -0000 1.115
@@ -143,7 +143,7 @@
/**
* Creates a task listener.
*/
- public TaskListener setupListener( final ModelElement model,
+ public TaskListener createListener( final ModelElement model,
final TaskContext context )
throws Exception
{
@@ -261,13 +261,26 @@
m_context = null;
}
+ /**
+ * Executes a set of targets in a new workspace.
+ */
public void execute( final ExecutionFrame frame,
final ProjectDescriptor project,
- final String target )
+ final String[] targets )
throws TaskException
{
final Workspace workspace = createWorkspace( frame );
- workspace.execute( project, target );
+ if( targets == null || targets.length == 0 )
+ {
+ workspace.execute( project, null );
+ }
+ else
+ {
+ for( int i = 0; i < targets.length; i++ )
+ {
+ workspace.execute( project, targets[ i ] );
+ }
+ }
}
/**
1.33 +3 -15 jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/interfaces/EmbeddedAnt.java
Index: EmbeddedAnt.java
===================================================================
RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/interfaces/EmbeddedAnt.java,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -r1.32 -r1.33
--- EmbeddedAnt.java 30 Jun 2002 10:49:40 -0000 1.32
+++ EmbeddedAnt.java 2 Jul 2002 02:18:09 -0000 1.33
@@ -187,19 +187,7 @@
final String[] targets )
throws TaskException
{
- if( targets == null || targets.length == 0 )
- {
- //final String targetName = descriptor.getDefaultTargetName();
- //Next line an utter hack - need to rejif it completely
- m_embeddor.execute( frame, descriptor, null );
- }
- else
- {
- for( int i = 0; i < targets.length; i++ )
- {
- m_embeddor.execute( frame, descriptor, targets[ i ] );
- }
- }
+ m_embeddor.execute( frame, descriptor, targets );
}
/**
@@ -288,7 +276,7 @@
else
{
final ModelElement model = (ModelElement)obj;
- listener = embeddor.setupListener( model, null );
+ listener = embeddor.createListener( model, null );
}
eventManager.addTaskListener( listener );
}
1.30 +11 -9 jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/interfaces/embeddor/Embeddor.java
Index: Embeddor.java
===================================================================
RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/java/org/apache/myrmidon/interfaces/embeddor/Embeddor.java,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -r1.29 -r1.30
--- Embeddor.java 30 Jun 2002 10:49:40 -0000 1.29
+++ Embeddor.java 2 Jul 2002 02:18:09 -0000 1.30
@@ -48,7 +48,7 @@
* @return the listener.
* @throws Exception If the listener could not be created.
*/
- TaskListener setupListener( ModelElement model, TaskContext context )
+ TaskListener createListener( ModelElement model, TaskContext context )
throws Exception;
/**
@@ -69,16 +69,18 @@
throws Exception;
/**
- * Execute a target in a project in specified frame.
- * If target is null then the default target in project will be executed.
+ * Execute a set of targets in a project in a new workspace.
+ * If the list of targets is null or zero length, then the default targets
+ * in project will be executed. The targets are executed in the order
+ * given, subject to dependency ordering, and each targets is executed once.
*
- * @param frame the frame in which to execute project
- * @param project the descriptor point to project
- * @param target the target in project to execute (May be null).
- * @throws TaskException if error executing target
+ * @param frame the frame to use to construct the workspace
+ * @param project the descriptor pointing to project
+ * @param targets the targets to execute (May be null).
+ * @throws TaskException if error executing targets
*/
void execute( ExecutionFrame frame,
ProjectDescriptor project,
- String target )
+ String[] targets )
throws TaskException;
}
1.40 +3 -3 jakarta-ant-myrmidon/container/src/test/org/apache/myrmidon/components/embeddor/test/DefaultEmbeddorTest.java
Index: DefaultEmbeddorTest.java
===================================================================
RCS file: /home/cvs/jakarta-ant-myrmidon/container/src/test/org/apache/myrmidon/components/embeddor/test/DefaultEmbeddorTest.java,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- DefaultEmbeddorTest.java 30 Jun 2002 10:49:41 -0000 1.39
+++ DefaultEmbeddorTest.java 2 Jul 2002 02:18:09 -0000 1.40
@@ -108,7 +108,7 @@
public void testCreateListener() throws Exception
{
final ModelElement model = new ModelElement( "default", "?:?:?" );
- final TaskListener listener = getEmbeddor().setupListener( model, null );
+ final TaskListener listener = getEmbeddor().createListener( model, null );
assertNotNull( listener );
}
@@ -140,7 +140,7 @@
// Execute the default target
final String defaultTargetName = project.getDefaultTargetName();
- embeddor.execute( frame, project.getProjectDescriptor(), defaultTargetName );
+ embeddor.execute( frame, project.getProjectDescriptor(), new String[] { defaultTargetName } );
// Cleanup
listener.assertComplete();
1.26 +32 -9 jakarta-ant-myrmidon/framework/src/java/org/apache/myrmidon/framework/ExecuteTarget.java
Index: ExecuteTarget.java
===================================================================
RCS file: /home/cvs/jakarta-ant-myrmidon/framework/src/java/org/apache/myrmidon/framework/ExecuteTarget.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- ExecuteTarget.java 30 Jun 2002 10:49:41 -0000 1.25
+++ ExecuteTarget.java 2 Jul 2002 02:18:09 -0000 1.26
@@ -9,6 +9,7 @@
import java.util.HashMap;
import java.util.Map;
+import java.util.Arrays;
import org.apache.avalon.excalibur.i18n.ResourceManager;
import org.apache.avalon.excalibur.i18n.Resources;
import org.apache.myrmidon.api.TaskContext;
@@ -18,7 +19,7 @@
import org.apache.myrmidon.interfaces.workspace.ProjectDescriptor;
/**
- * A utility class that simplifies executing a target in a project.
+ * A utility class that simplifies executing a target in a new workspace.
*
* @author <a href="mailto:peter@apache.org">Peter Donald</a>
* @author <a href="mailto:darrell@apache.org">Darrell DeBoer</a>
@@ -31,9 +32,9 @@
ResourceManager.getPackageResources( ExecuteTarget.class );
private boolean m_inheritAll;
- private String m_target;
private ProjectDescriptor m_project;
private final Map m_parameters = new HashMap();
+ private String[] m_targets;
/**
* Enables the inheritance of properties from the calling task. Default
@@ -45,12 +46,29 @@
}
/**
- * Sets the name of the target to execute. If not specified, the project's
+ * Sets the target to execute. If not specified, the project's
* default target will be executed.
*/
public void setTarget( final String target )
{
- m_target = target;
+ if( target != null )
+ {
+ m_targets = new String[] { target };
+ }
+ else
+ {
+ m_targets = null;
+ }
+ }
+
+ /**
+ * Sets the targets to execute. If not specified, the project's default
+ * target will be executed. The targets are executed in the order given,
+ * subject to dependency ordering, and each target is executed once only.
+ */
+ public void setTargets( final String[] targets )
+ {
+ m_targets = targets;
}
/**
@@ -81,18 +99,23 @@
try
{
- // TODO - need to be able to inherit services (TypeManager specifically)
final ExecutionFrame frame = embeddor.createExecutionFrame( properties, null );
- embeddor.execute( frame, m_project, m_target );
+ embeddor.execute( frame, m_project, m_targets );
}
catch( final Exception e )
{
final String message;
- if( m_target != null )
+ if( m_targets != null && m_targets.length ==1 )
+ {
+ message = REZ.getString( "execute-target.execute.error",
+ m_project.getUri(),
+ m_targets[0] );
+ }
+ else if( m_targets != null && m_targets.length > 1 )
{
message = REZ.getString( "execute-target.execute.error",
m_project.getUri(),
- m_target );
+ Arrays.asList( m_targets ) );
}
else
{
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: cvs commit: jakarta-ant-myrmidon/framework/src/java/org/apache/myrmidon/framework ExecuteTarget.java
Posted by Adam Murdoch <ad...@apache.org>.
On Tue, 2 Jul 2002 12:53, Peter Donald wrote:
> At 12:50 PM 7/2/2002 +1000, you wrote:
> >On Tue, 2 Jul 2002 12:21, Peter Donald wrote:
> > > At 02:18 AM 7/2/2002 +0000, you wrote:
> > > > Log:
> > > > - Renamed Embeddor.setupListener() to createListener(), for better
> > > > match with
> > > > the other Embeddor methods.
> > > >
> > > > - Changed Embeddor.execute() to take a list of targets to execute.
> > > > Allows execution of more than one target in the same workspace.
> > > >
> > > > - Frontend now executes all targets given on the command-line in
> > > > the same workspace, rather than creating a new workspace for each
> > > > target.
> > >
> > > It was a deliberate choice not to do that as many people bitched about
> > > ant1.x doing this. ie Quite a few bug reports eventually boil down to
> > >
> > > "ant clean main" should be equivelent to "ant clean; ant main"
> > >
> > > However making both targets execute in same workspace moves us back to
> > > ant1.x model. Thoughts?
> >
> >I was planning on adding a command-line option to let the user choose how
> >they
> >want the targets to be executed. The default will be to execute them all
> > in a single workspace (which I think is the more useful option).
>
> How come you think this is more useful?
Because it does the minimum amount of work to achieve what the user has asked
for. For something like 'ant clean main' it makes no difference; 'clean' and
'main' aren't going to share much (if any) of the dependency graph. But for
something like, say, 'ant test dist-lite', both targets share a large chunk
of the graph. I really don't want the 'dist-lite' target to run over my
source a second time, just so it can figure out that there's nothing that
needs doing.
> I would really prefer the old style as default as people have complained
> about it not being that way before.
People have complained about both styles. It has to be easy for the user to
do whichever they prefer (probably a good config file option). I really
don't care what the default is. I'll make it new-workspace-per-target (er,
the old style, I think).
--
Adam
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: cvs commit:
jakarta-ant-myrmidon/framework/src/java/org/apache/myrmidon/framework
ExecuteTarget.java
Posted by Peter Donald <pe...@apache.org>.
At 12:50 PM 7/2/2002 +1000, you wrote:
>On Tue, 2 Jul 2002 12:21, Peter Donald wrote:
> > At 02:18 AM 7/2/2002 +0000, you wrote:
> > > Log:
> > > - Renamed Embeddor.setupListener() to createListener(), for better
> > > match with
> > > the other Embeddor methods.
> > >
> > > - Changed Embeddor.execute() to take a list of targets to execute.
> > > Allows execution of more than one target in the same workspace.
> > >
> > > - Frontend now executes all targets given on the command-line in the
> > > same workspace, rather than creating a new workspace for each target.
> >
> > It was a deliberate choice not to do that as many people bitched about
> > ant1.x doing this. ie Quite a few bug reports eventually boil down to
> >
> > "ant clean main" should be equivelent to "ant clean; ant main"
> >
> > However making both targets execute in same workspace moves us back to
> > ant1.x model. Thoughts?
>
>I was planning on adding a command-line option to let the user choose how
>they
>want the targets to be executed. The default will be to execute them all in
>a single workspace (which I think is the more useful option).
How come you think this is more useful?
I would really prefer the old style as default as people have complained
about it not being that way before.
Cheers,
Peter Donald
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
"Faced with the choice between changing one's mind,
and proving that there is no need to do so - almost
everyone gets busy on the proof."
- John Kenneth Galbraith
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: cvs commit: jakarta-ant-myrmidon/framework/src/java/org/apache/myrmidon/framework ExecuteTarget.java
Posted by Adam Murdoch <ad...@apache.org>.
On Tue, 2 Jul 2002 12:21, Peter Donald wrote:
> At 02:18 AM 7/2/2002 +0000, you wrote:
> > Log:
> > - Renamed Embeddor.setupListener() to createListener(), for better
> > match with
> > the other Embeddor methods.
> >
> > - Changed Embeddor.execute() to take a list of targets to execute.
> > Allows execution of more than one target in the same workspace.
> >
> > - Frontend now executes all targets given on the command-line in the
> > same workspace, rather than creating a new workspace for each target.
>
> It was a deliberate choice not to do that as many people bitched about
> ant1.x doing this. ie Quite a few bug reports eventually boil down to
>
> "ant clean main" should be equivelent to "ant clean; ant main"
>
> However making both targets execute in same workspace moves us back to
> ant1.x model. Thoughts?
I was planning on adding a command-line option to let the user choose how they
want the targets to be executed. The default will be to execute them all in
a single workspace (which I think is the more useful option).
--
Adam
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>
Re: cvs commit:
jakarta-ant-myrmidon/framework/src/java/org/apache/myrmidon/framework
ExecuteTarget.java
Posted by Peter Donald <pe...@apache.org>.
At 02:18 AM 7/2/2002 +0000, you wrote:
> Log:
> - Renamed Embeddor.setupListener() to createListener(), for better
> match with
> the other Embeddor methods.
>
> - Changed Embeddor.execute() to take a list of targets to execute. Allows
> execution of more than one target in the same workspace.
>
> - Frontend now executes all targets given on the command-line in the same
> workspace, rather than creating a new workspace for each target.
It was a deliberate choice not to do that as many people bitched about
ant1.x doing this. ie Quite a few bug reports eventually boil down to
"ant clean main" should be equivelent to "ant clean; ant main"
However making both targets execute in same workspace moves us back to
ant1.x model. Thoughts?
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>