Ant taskdef 需要什么类路径?

发布于 2024-09-27 23:05:21 字数 96 浏览 7 评论 0原文

我是蚂蚁的新手。 有人可以告诉我为taskdef 的“classpathref”设置什么值吗? 它会是类文件的路径吗? 如果是的话,可以举个例子,因为我尝试过,但它对我不起作用。

I'm new to Ant.
Can someone please tell me what value to put for the 'classpathref' for taskdef?
Will it be the path of the class file?
If yes can an example be given because I tried that and its not working for me.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风无影 2024-10-04 23:05:21

在taskdef中,classpathref应该是对先前定义的path的引用。
该路径应包含一个 jar 存档,其中包含实现任务的类,
或者它应该指向文件系统中作为类层次结构的的目录。
如果您的类驻留在包中,这将不是保存您的类的实际目录。

这是一个例子。

MyTask.java:

package com.x.y.z;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;

public class MyTask extends Task
{
    // The method executing the task
    public void execute() throws BuildException {
        System.out.println( "MyTask is running" );
    }
}

请注意,包名称为 com.xyz,因此部署时 -
假设这些类放在名为 classes 的目录下 - 我们可能会在文件系统中看到该类:

$ ls classes/com/x/y/z
MyTask.class

这是一个使用该任务的简单 build.xml:

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

<path id="my.classes">
    <pathelement path="${basedir}/classes" />
</path>
<taskdef name="mytask" classpathref="my.classes" classname="com.x.y.z.MyTask"/>
<mytask />

</project>

请注意 classpathref 给定的指向 classes 目录 - 类层次结构的根。

运行时,我们得到:

$ ant
Buildfile: .../build.xml
   [mytask] MyTask is running

您可以使用显式的类路径而不是“classpathref”来执行类似的操作,例如:

<property name="my.classes" value="${basedir}/classes" />
<taskdef name="mytask" classpath="${my.classes}" classname="com.x.y.z.MyTask"/>

In the taskdef, the classpathref should be a reference to a previously defined path.
The path should include a jar archive that holds the class implementing the task,
or it should point to the directory in the file system that is the root of the class hierarchy.
This would not be the actual directory that holds your class if your class resides in a package.

Here's an example.

MyTask.java:

package com.x.y.z;

import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Task;

public class MyTask extends Task
{
    // The method executing the task
    public void execute() throws BuildException {
        System.out.println( "MyTask is running" );
    }
}

Note that the package name is com.x.y.z, so when deployed -
lets say the classes are put under a directory called classes - we might see the class here in the file system:

$ ls classes/com/x/y/z
MyTask.class

Here's a simple build.xml that uses the task:

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

<path id="my.classes">
    <pathelement path="${basedir}/classes" />
</path>
<taskdef name="mytask" classpathref="my.classes" classname="com.x.y.z.MyTask"/>
<mytask />

</project>

Note that the classpathref given points at the classes directory - the root of the class hierarchy.

When run, we get:

$ ant
Buildfile: .../build.xml
   [mytask] MyTask is running

You can do similar using an explicit classpath, rather than a 'classpathref', for example:

<property name="my.classes" value="${basedir}/classes" />
<taskdef name="mytask" classpath="${my.classes}" classname="com.x.y.z.MyTask"/>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文