ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jose Alberto Fernandez <JFernan...@viquity.com>
Subject RE: cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdef s CallTarget.java defaults.properties
Date Fri, 21 Jul 2000 20:09:58 GMT
You guys are too fast for me :-)

The only thing I do not fully like is the name of the task,
it conveys that you are calling ANT recursively (which we are but it is
beside the point), what you really want is to invoque a particular target 
not ANT itself. So I would proposed rename it <anttarget> or something like
that.

 <target name="x" >
  <anttarget target="y">
   <property name="a" value="aaaa">
  </anttarget>
 </target>

Other possible good names (IMHO) would be: 
  <calltarget target="y"> or <apply target="y" >
the second has this aura of declatative/functional programming that
makes me feel good 8-)

Anyway, just a thought....

Jose Alberto
PD: the more I see it te more I like <apply>, its a simple name.

> -----Original Message-----
> From: bodewig@locus.apache.org [mailto:bodewig@locus.apache.org]
> Sent: Friday, July 21, 2000 6:30 AM
> To: jakarta-ant-cvs@apache.org
> Subject: cvs commit: 
> jakarta-ant/src/main/org/apache/tools/ant/taskdefs
> CallTarget.java defaults.properties
> 
> 
> bodewig     00/07/21 06:29:57
> 
>   Modified:    src/main/org/apache/tools/ant/taskdefs 
> defaults.properties
>   Added:       src/main/org/apache/tools/ant/taskdefs CallTarget.java
>   Log:
>   Added an antcall task as a shortcut for ant tasks invoked 
> on the same
>   buildfile.
>   
>   Revision  Changes    Path
>   1.26      +1 -0      
> jakarta-ant/src/main/org/apache/tools/ant/taskdefs/defaults.properties
>   
>   Index: defaults.properties
>   ===================================================================
>   RCS file: 
> /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/d
> efaults.properties,v
>   retrieving revision 1.25
>   retrieving revision 1.26
>   diff -u -r1.25 -r1.26
>   --- defaults.properties	2000/07/20 10:02:02	1.25
>   +++ defaults.properties	2000/07/21 13:29:57	1.26
>   @@ -37,6 +37,7 @@
>    signjar=org.apache.tools.ant.taskdefs.SignJar
>    antstructure=org.apache.tools.ant.taskdefs.AntStructure
>    executeon=org.apache.tools.ant.taskdefs.ExecuteOn
>   +antcall=org.apache.tools.ant.taskdefs.CallTarget
>    
>    # optional tasks
>    script=org.apache.tools.ant.taskdefs.optional.Script
>   
>   
>   
>   1.1                  
> jakarta-ant/src/main/org/apache/tools/ant/taskdefs/CallTarget.java
>   
>   Index: CallTarget.java
>   ===================================================================
>   /*
>    * The Apache Software License, Version 1.1
>    *
>    * Copyright (c) 1999 The Apache Software Foundation.  All rights
>    * reserved.
>    *
>    * Redistribution and use in source and binary forms, with 
> or without
>    * modification, are permitted provided that the following 
> conditions
>    * are met:
>    *
>    * 1. Redistributions of source code must retain the above copyright
>    *    notice, this list of conditions and the following disclaimer.
>    *
>    * 2. Redistributions in binary form must reproduce the 
> above copyright
>    *    notice, this list of conditions and the following 
> disclaimer in
>    *    the documentation and/or other materials provided with the
>    *    distribution.
>    *
>    * 3. The end-user documentation included with the 
> redistribution, if
>    *    any, must include the following acknowlegement:
>    *       "This product includes software developed by the
>    *        Apache Software Foundation (http://www.apache.org/)."
>    *    Alternately, this acknowlegement may appear in the 
> software itself,
>    *    if and wherever such third-party acknowlegements 
> normally appear.
>    *
>    * 4. The names "The Jakarta Project", "Tomcat", and 
> "Apache Software
>    *    Foundation" must not be used to endorse or promote 
> products derived
>    *    from this software without prior written permission. 
> For written
>    *    permission, please contact apache@apache.org.
>    *
>    * 5. Products derived from this software may not be called "Apache"
>    *    nor may "Apache" appear in their names without prior written
>    *    permission of the Apache Group.
>    *
>    * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
>    * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
>    * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
>    * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
>    * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>    * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>    * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
>    * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 
> CAUSED AND
>    * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
> LIABILITY,
>    * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 
> ANY WAY OUT
>    * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
> POSSIBILITY OF
>    * SUCH DAMAGE.
>    * 
> ====================================================================
>    *
>    * This software consists of voluntary contributions made by many
>    * individuals on behalf of the Apache Software Foundation. 
>  For more
>    * information on the Apache Software Foundation, please see
>    * <http://www.apache.org/>.
>    */
>   
>   package org.apache.tools.ant.taskdefs;
>   
>   import org.apache.tools.ant.*;
>   
>   /**
>    * Call another target in the same project.
>    *
>    *  <pre>
>    *    <target name="foo">
>    *      <calltarget target="bar">
>    *        <property name="property1" value="aaaaa" />
>    *        <property name="foo" value="baz" />
>    *       </calltarget>
>    *    </target>
>    *
>    *    <target name="bar" depends="init">
>    *      <echo message="prop is ${property1} ${foo}" />
>    *    </target>
>    * </pre>
>    *
>    * <p>This only works as expected if neither property1 nor foo are
>    * defined in the project itself.
>    *
>    *
>    * @author <a 
> href="mailto:stefan.bodewig@megabit.net">Stefan Bodewig</a> 
>    */
>   public class CallTarget extends Task {
>   
>       private Ant delegate;
>       private String subTarget;
>   
>       public void init() {
>           delegate = (Ant) project.createTask("ant");
>           delegate.setOwningTarget(target);
>           delegate.setTaskName(getTaskName());
>           delegate.setLocation(location);
>           delegate.init();
>       }
>   
>       public void execute() {
>           if (subTarget == null) {
>               throw new BuildException("Attribute target is 
> required.", 
>                                        location);
>           }
>           
>           delegate.setDir(".");
>           delegate.setAntfile(project.getProperty("ant.file"));
>           delegate.setTarget(subTarget);
>           delegate.execute();
>       }
>   
>       public Property createParam() {
>           return delegate.createProperty();
>       }
>   
>       public void setTarget(String target) {
>           subTarget = target;
>       }
>   }
>   
>   
>   
> 

Mime
View raw message