Ich bin neu bei Ant. Kann mir jemand sagen, welchen Wert ich für "classpathref" für taskdef eingeben muss? Wird es der Pfad der Klassendatei sein? Wenn ja, kann ein Beispiel gegeben werden, weil ich versucht, dass und seine nicht für mich arbeiten.
Antwort
Zu viele Anzeigen?In der Aufgabendefinition wird die classpathref
sollte ein Verweis auf eine zuvor definierte path
. Der Pfad sollte ein jar-Archiv enthalten, das die Klasse enthält, die die Aufgabe implementiert, oder er sollte auf das Verzeichnis im Dateisystem verweisen, das die Wurzel der Klassenhierarchie. Wenn sich Ihre Klasse in einem Paket befindet, ist dies nicht das eigentliche Verzeichnis, in dem sich Ihre Klasse befindet.
Hier ist ein Beispiel.
MeineAufgabe.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" );
}
}
Beachten Sie, dass der Paketname com.x.y.z
wenn sie also eingesetzt werden - sagen wir mal, die Klassen werden in ein Verzeichnis namens classes
- können wir die Klasse hier im Dateisystem sehen:
$ ls classes/com/x/y/z
MyTask.class
Hier ist eine einfache build.xml, die die Aufgabe verwendet:
<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>
Beachten Sie, dass die classpathref
gegebene Punkte an den classes
Verzeichnis - die Wurzel der Klassenhierarchie.
Wenn sie ausgeführt wird, erhalten wir:
$ ant
Buildfile: .../build.xml
[mytask] MyTask is running
Ähnliches können Sie mit einer expliziten classpath
anstelle eines 'classpathref', zum Beispiel:
<property name="my.classes" value="${basedir}/classes" />
<taskdef name="mytask" classpath="${my.classes}" classname="com.x.y.z.MyTask"/>