私はAntが初めてです。taskdef の「classpathref」に指定する値を教えてください。クラスファイルのパスになりますか?はいの場合、私はそれを試しましたが、うまくいかないため、例を挙げることができます。
18369 次
1 に答える
8
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.x.y.z
であることに注意してください。したがって、デプロイすると、クラスが というディレクトリの下に置かれるとし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
classpath
たとえば、「classpathref」ではなく明示的な を使用して同様のことができます。
<property name="my.classes" value="${basedir}/classes" />
<taskdef name="mytask" classpath="${my.classes}" classname="com.x.y.z.MyTask"/>
于 2010-10-14T14:48:44.650 に答える