1

当我们在 Ant 中使用时,我想将一些函数参数传递给public void execute()作为 Java 代码中类的基本入口点的函数。<taskdef>所以我的问题是我们能否<taskdef>在 Ant 中将参数传递给函数,如果可以的话,如何将参数传递给函数。

在下面提供我的示例 Ant 代码和需要修改的 Java 代码。


build.xml 的代码

<?xml version="1.0" encoding="ISO-8859-1"?>
<project name="MyTask" basedir="." default="use">
    <target name="use" description="Use the Task" depends="jar">
        <taskdef name="helloworld" classname="HelloWorld" classpath="HelloWorld.jar"/>
        <helloworld/>
    </target>

    <!-- invoking java files by java task  -->
    <target name="javatask">
        <java fork="true" failonerror="yes" classname="HelloWorld.class"/>
    </target>

    <target name="jar" depends="compile">
        <jar destfile="HelloWorld.jar"
       basedir="."/>
    </target>

    <target name="compile" depends="clean">
        <javac srcdir="." destdir="." includeantruntime="false"/>
    </target>

    <target name="clean">
        <delete file="HelloWorld.jar"/>
    </target>
</project>

HelloWorld.java

    public class HelloWorld {
        public void execute() {
            System.out.println("Hello World first function");
        }
    }

我需要将函数参数传递给 execute() 函数。我怎样才能做到这一点?

4

2 回答 2

1

我认为这应该对你有用。

<?xml version="1.0"?> 

<project name="Build-example" default="main" basedir="."> 
<taskdef name="mytask" classname="com.urdomain.HelloWorld " classpath="bin"          /> 

<target name="main"> 
<mytask message="Hello my Task!" /> 

</target> 
</project> 

在上面的代码片段中,您可以在需要向其传递参数的类中定义 taskdef 名称。参数可以通过上面的 aa 传递。在这里,我尝试将“Hello my Task”作为消息传递。

于 2017-02-17T10:43:19.973 回答
1

试试这个:

public class HelloWorld extends Task {

String message;
public void setMessage(String msg) {
    message = msg;
}

public void execute() {
    if (message==null) {
        throw new BuildException("No message set.");
    }
    log(message);
}

}

<target name="use" description="Use the Task" depends="jar">
    <taskdef name="helloworld" classname="HelloWorld" classpath="HelloWorld.jar"/>
    <helloworld message="Hello World" />
</target>

请参阅操作指南

于 2017-02-17T11:41:18.953 回答