首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将参数传递给Ant <taskdef>自定义Java类

如何将参数传递给Ant <taskdef>自定义Java类
EN

Stack Overflow用户
提问于 2017-02-17 10:33:29
回答 2查看 1.3K关注 0票数 1

我想将一些函数参数传递给函数public void execute(),它是我们在Ant中使用<taskdef>时从<taskdef>代码中向类的一个基本入口点。因此,我的问题是,如果是这样的话,我们能够将参数传递给<taskdef>中的函数吗?

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

build.xml代码

代码语言:javascript
复制
<?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

代码语言:javascript
复制
    public class HelloWorld {
        public void execute() {
            System.out.println("Hello World first function");
        }
    }

我需要传递一个函数参数来执行()函数。我怎样才能做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-17 11:41:18

试试这个:

代码语言:javascript
复制
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);
}

}

代码语言:javascript
复制
<target name="use" description="Use the Task" depends="jar">
    <taskdef name="helloworld" classname="HelloWorld" classpath="HelloWorld.jar"/>
    <helloworld message="Hello World" />
</target>

请参阅如何

票数 1
EN

Stack Overflow用户

发布于 2017-02-17 10:43:19

我觉得这应该对你有用。

代码语言:javascript
复制
<?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‘作为消息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42295627

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档