6 Stimmen

Welchen Klassenpfad benötige ich für einen Ant-Taskdef?

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.

8voto

martin clayton Punkte 74309

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"/>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X