如何从自定义的Ant task中返回值

在自定义的task中如果想将值返回给Ant,需要在自定义的task中通过getProject().setNewProperty(name,value) 方法将property名称和值关联起来.同时需要用public void setProperty(String propertyName) 得到property名称.

实例:

JAVA 类
public class OwnTask extends Task {
    private String prop1;
    private String propertyName;

    public String getProp1() {
        return prop1;
    }

    public void setProp1(String prop1) {
        this.prop1 = prop1;
    }

    public void setProperty(String propertyName) {
        this.propertyName = propertyName;
    }

    public void execute() throws BuildException {
        System.out.println("Execute Customized task " + prop1);
        setProp1(prop1 + " Changed");
        // prop1 = prop1 + " Changed";
        System.out.println("Execute Customized task " + prop1);

        getProject().setNewProperty(this.propertyName, "test change value in own task");
    }

}
build xml文件:

<?xml version="1.0"?>

<project name="TestTask" basedir=".">

    <property name="mainArg" value="original value" />
    <property name="propArg" value="original value" />
    <property name="project.lib.path" value="D:/temp" />

    <path id="testTask.classpath">
        <fileset dir="${project.lib.path}">
            <include name="**/*.jar" />
        </fileset>

    </path>

    <taskdef name="ownTask" classname="com.test.owntask.OwnTask" classpathref="testTask.classpath" />

    <target name="testTask">
        <ownTask property="testProp" prop1="${propArg}">
        </ownTask>
        <echo message="------------------- ${testProp} -------------------------------------" />
        <echo message="------------------- ${propArg} -------------------------------------" />
    </target>

    <target name="testMain">

        <echo message="------------------- ${project.lib.path} -------------------------------------" />
        <java classname="com.test.owntask.MainTest">
            <arg value="${mainArg}" />
            <classpath>
                <fileset dir="${project.lib.path}">
                    <include name="**/*.jar" />
                </fileset>

            </classpath>

        </java>
        <echo message="------------------- ${mainArg} -------------------------------------" />
    </target>


</project>
在上面的例子<ownTask property="testProp" prop1="${propArg}">中,testProp是property,在JAVA类中改变后值可以传回Ant.

prop1是通过set方法传入的信息,值不会被传回Ant.同样,上面的例子中JAVA main方法改变的值也不会传回Ant.

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值