2009-08-01 7 views
0

Ich versuche amant, um eine Anwendung zu erstellen, führen Sie die main() -Methode der Anwendung, führen Sie Junit-Tests und alles in einer JAR-Datei (Quelle + build + libraries + build.xml). Die Klassen enthalten eine Runner-Klasse mit einem Einstiegspunkt main().Erstellen einer ausführbaren JAR-Datei mit Ant, die die Datei build.xml enthält

Das Ziel ist jedoch, alle verwendeten Bibliotheken, wie junit.jar und die Ameise build.xml selbst einzuschließen.

Ich frage mich, ob es eine Möglichkeit für die ausführbare JAR-Datei gibt, ausgewählte Ziele der Ant-Build-Datei itslef anstelle der main() -Methode auszuführen. Offensichtlich müsste ich die Kompilierungsziele nicht erneut ausführen, sondern nur die main() -Methode (das Java-Element in meinem Laufziel) und das Junit-Ziel. Ist das möglich?

Vielen Dank im Voraus für die Einsicht!

+0

enchr, habe ich deine Frage beantwortet? Wenn nicht, klären Sie, was Sie erreichen möchten, und ich werde meine Antwort bearbeiten (oder jemand anderes würde Ihnen eine bessere Antwort geben). Und wenn ich das tat, bitte stimme dafür oder akzeptiere die Antwort - so funktioniert SO und du scheinst das nicht für die meisten deiner Fragen zu tun. – ChssPly76

+0

Ja, das hast du tatsächlich getan. Vielen Dank. Lassen Sie mich Ihre Antwort akzeptieren, tut mir leid. – denchr

Antwort

3

"Ausführbare Glas" ist nicht, was Sie denken, dass es ist. Es ermöglicht Ihnen, alle Ihre Klassen zusammen zu packen (Sie können auch Quelle hinzufügen, obwohl ich wenig Sinn darin sehe) und eine Hauptklasse mit Main-Class-Attribut im Jar-Manifest deklarieren. Details sind here.

Sie können dieses JAR dann mit der Befehlszeile "java -jar my.jar" starten, die die Methode main() der angegebenen Klasse aufrufen würde. Sie können auch specify classpath über Class-Path Attribut in der Manifest-Datei, die auf andere Gläser zeigen kann, die von Ihrer Anwendung benötigt werden. Das bedeutet nicht diese Gläser sind in Ihrem Glas archiviert; in der Tat, wenn Sie das tun würden, wird JVM nicht in der Lage sein, Klassen aus diesen Jars zu laden, es sei denn, Sie sollten besondere Vorkehrungen treffen und einen benutzerdefinierten Classloader schreiben.

Verwandte Themen