⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 calltarget.java

📁 Use the links below to download a source distribution of Ant from one of our mirrors. It is good pra
💻 JAVA
字号:
/* *  Licensed to the Apache Software Foundation (ASF) under one or more *  contributor license agreements.  See the NOTICE file distributed with *  this work for additional information regarding copyright ownership. *  The ASF licenses this file to You under the Apache License, Version 2.0 *  (the "License"); you may not use this file except in compliance with *  the License.  You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * *  Unless required by applicable law or agreed to in writing, software *  distributed under the License is distributed on an "AS IS" BASIS, *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *  See the License for the specific language governing permissions and *  limitations under the License. * */package org.apache.tools.ant.taskdefs;import java.io.IOException;import org.apache.tools.ant.Task;import org.apache.tools.ant.BuildException;import org.apache.tools.ant.types.PropertySet;/** * Call another target in the same project. * *  <pre> *    &lt;target name="foo"&gt; *      &lt;antcall target="bar"&gt; *        &lt;param name="property1" value="aaaaa" /&gt; *        &lt;param name="foo" value="baz" /&gt; *       &lt;/antcall&gt; *    &lt;/target&gt; * *    &lt;target name="bar" depends="init"&gt; *      &lt;echo message="prop is ${property1} ${foo}" /&gt; *    &lt;/target&gt; * </pre> * * <p>This only works as expected if neither property1 nor foo are * defined in the project itself. * * * @since Ant 1.2 * * @ant.task name="antcall" category="control" */public class CallTarget extends Task {    private Ant callee;    // must match the default value of Ant#inheritAll    private boolean inheritAll = true;    // must match the default value of Ant#inheritRefs    private boolean inheritRefs = false;    private boolean targetSet = false;    /**     * If true, pass all properties to the new Ant project.     * Defaults to true.     * @param inherit <code>boolean</code> flag.     */    public void setInheritAll(boolean inherit) {       inheritAll = inherit;    }    /**     * If true, pass all references to the new Ant project.     * Defaults to false.     * @param inheritRefs <code>boolean</code> flag.     */    public void setInheritRefs(boolean inheritRefs) {        this.inheritRefs = inheritRefs;    }    /**     * Initialize this task by creating new instance of the ant task and     * configuring it by calling its own init method.     */    public void init() {        callee = new Ant(this);        callee.init();    }    /**     * Delegate the work to the ant task instance, after setting it up.     * @throws BuildException on validation failure or if the target didn't     * execute.     */    public void execute() throws BuildException {        if (callee == null) {            init();        }        if (!targetSet) {            throw new BuildException(                "Attribute target or at least one nested target is required.",                 getLocation());        }        callee.setAntfile(getProject().getProperty("ant.file"));        callee.setInheritAll(inheritAll);        callee.setInheritRefs(inheritRefs);        callee.execute();    }    /**     * Create a new Property to pass to the invoked target(s).     * @return a <code>Property</code> object.     */    public Property createParam() {        if (callee == null) {            init();        }        return callee.createProperty();    }    /**     * Reference element identifying a data type to carry     * over to the invoked target.     * @param r the specified <code>Ant.Reference</code>.     * @since Ant 1.5     */    public void addReference(Ant.Reference r) {        if (callee == null) {            init();        }        callee.addReference(r);    }    /**     * Set of properties to pass to the new project.     * @param ps the <code>PropertySet</code> to pass.     * @since Ant 1.6     */    public void addPropertyset(PropertySet ps) {        if (callee == null) {            init();        }        callee.addPropertyset(ps);    }    /**     * Set target to execute.     * @param target the name of the target to execute.     */    public void setTarget(String target) {        if (callee == null) {            init();        }        callee.setTarget(target);        targetSet = true;    }    /**     * Add a target to the list of targets to invoke.     * @param t <code>Ant.TargetElement</code> representing the target.     * @since Ant 1.6.3     */    public void addConfiguredTarget(Ant.TargetElement t) {        if (callee == null) {            init();        }        callee.addConfiguredTarget(t);        targetSet = true;    }    /**     * Handles output.     * Send it the the new project if is present, otherwise     * call the super class.     * @param output The string output to output.     * @see Task#handleOutput(String)     * @since Ant 1.5     */    public void handleOutput(String output) {        if (callee != null) {            callee.handleOutput(output);        } else {            super.handleOutput(output);        }    }    /**     * Handles input.     * Deleate to the created project, if present, otherwise     * call the super class.     * @param buffer the buffer into which data is to be read.     * @param offset the offset into the buffer at which data is stored.     * @param length the amount of data to read.     *     * @return the number of bytes read.     *     * @exception IOException if the data cannot be read.     * @see Task#handleInput(byte[], int, int)     * @since Ant 1.6     */    public int handleInput(byte[] buffer, int offset, int length)        throws IOException {        if (callee != null) {            return callee.handleInput(buffer, offset, length);        }        return super.handleInput(buffer, offset, length);    }    /**     * Handles output.     * Send it the the new project if is present, otherwise     * call the super class.     * @param output The string to output.     * @see Task#handleFlush(String)     * @since Ant 1.5.2     */    public void handleFlush(String output) {        if (callee != null) {            callee.handleFlush(output);        } else {            super.handleFlush(output);        }    }    /**     * Handle error output.     * Send it the the new project if is present, otherwise     * call the super class.     * @param output The string to output.     *     * @see Task#handleErrorOutput(String)     * @since Ant 1.5     */    public void handleErrorOutput(String output) {        if (callee != null) {            callee.handleErrorOutput(output);        } else {            super.handleErrorOutput(output);        }    }    /**     * Handle error output.     * Send it the the new project if is present, otherwise     * call the super class.     * @param output The string to output.     * @see Task#handleErrorFlush(String)     * @since Ant 1.5.2     */    public void handleErrorFlush(String output) {        if (callee != null) {            callee.handleErrorFlush(output);        } else {            super.handleErrorFlush(output);        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -