Ich definiere eine neue Aufgabe in Ant. ich es als ein Glas exportiert und zu meinem Buildfile:Klassenpfad für Taskdef?
<taskdef classname="X" classpath="Y.jar"/>
Das Problem ist, dass diese zur Laufzeit ausfällt. Es sagt mir, dass es die Klasse nicht gefunden hat. Durch Hinzufügen des Glases zum Klassenpfad wird es korrigiert.
Meine Frage ist: Gibt es eine Möglichkeit, dass ich aus dem Ant-Buildfile auf mein Jar verweisen kann, ohne den Klassenpfad zu ändern?
Und wenn Sie eine 'CLASSPATH' Umgebungsvariable verwenden, nicht. Löschen Sie es aus Ihrer Umgebung, und gewöhnen Sie sich an, Klassenpfade explizit anzugeben. Andernfalls werden Sie sich mit einem schwer zu debuggenden Problem konfrontiert sehen, bei dem eine Bibliothek aus Ihrem Klassenpfad geladen wird und Sie dies nicht erwarten. Oder jemand anders kann Ihren Code nicht ausführen, weil er nicht dieselbe Umgebungsvariable CLASSPATH hat. – Anon
Ich sehe nicht, warum das ein weitaus besserer Ansatz ist. Das Angeben der Klassenpfade mit der Option "-lib" macht den Benutzer nur auf diese Pfade aufmerksam. Sie müssen dem Benutzer immer noch mitteilen, wo er nach ihnen suchen soll (z. B. in einer Infodatei, in einer Hilfedatei oder in einer zurückgesendeten Nachricht). Oder Sie können Ihre Projektverzeichnishierarchie so umstrukturieren, dass diese Bibliotheken in einem bestimmten Unterverzeichnis enthalten sind und "umweltunabhängig" werden. Ein Build-Skript sollte sich um diese Details kümmern und idealerweise ein sinnvolles Objekt mit dem Standardaufruf "ant" erzeugen. – Alberto