Ich bin dabei, meine Java-Anwendung in eine JAR-Datei zu packen. Ich benutze Ameise und Sonnenfinsternis. Ich muss tatsächlich ein paar separate, Nicht-Code-Dateien (XML- und TXT-Dateien) direkt unter dem Stammordner in den Jar einfügen, nicht an der gleichen Stelle wie der Code.Hinzufügen von Nicht-Code-Ressourcen zu JAR-Datei mit Ant
Ich versuche includesfile zu verwenden, aber das scheint nicht, hier zu arbeiten, ist mein Ziel ant:
<target name="distribute" depends="compile" includesfile="readthis.txt">
<jar destfile="${distributionDir}/myjar.jar" >
<fileset dir="${outputDir}"/>
<fileset dir="${sourceDir}"/>
</jar>
</target>
Die oben funktioniert gut, wenn ich das includesfile Argument weglassen. Außerdem muss ich mehrere Nicht-Code-Dateien hinzufügen. Diese Dateien befinden sich direkt unter dem Stammprojektordner in Eclipse und nicht innerhalb von Java-Paketen.
Auch, wie Sie oben sehen können, schließe ich im Grunde auch den Quellcode ein. Gibt es eine Möglichkeit, der JAR-Task mitzuteilen, den Quellcode in einen separaten Ordner vom kompilierten Code zu stellen?
Als Kompilier- oder Build-Task kann Ant den Quellcode leicht von den kompilierten Klassen trennen. Aber gibt es eine Möglichkeit, dies auch innerhalb einer JAR-Datei zu tun?
Vielen Dank für Ihre Zeit!
Danke! Das hat sicherlich geholfen. Ich habe mich gefragt, ob ich der JAR-Aufgabe auch sagen kann, die Quelle von den kompilierten Klassen zu trennen? Zu diesem Zeitpunkt befinden sich sowohl die Quelle als auch die Klassen in der gleichen Paketstruktur. Sollte die jar-Task die Ausgabe- und src-Ordner nicht beibehalten? Was bedeutet, dass, wenn ich das Glas erweitern, ich sehe in meinejar/code/my/Paket/file.java und file.class Ich dachte, dass das Glas Aufgabe die Ordner wie bewahren kann: meinejar/code/my/Paket /source/file.java - und separat myjar/code/mein/package/build/file.class Fehle ich etwas in meiner Verwendung der Jar-Aufgabe? – denchr
Nein, Sie sind falsch. Sie sollten Seite an Seite stehen. Wenn das JAR eine Ordnerstruktur wie code/my/package/build/file.class enthält, müsste der Paketname code.my.package.build lauten. Sie können die Quellen auch einfach in eine zweite JAR-Datei einfügen. –
Ich sehe was du meinst. Etwas wie das, was ich vorschlage, hätte Auswirkungen auf die Paketbenennung ... Wenn ich also die Quelle in meine JAR-Datei einschließen möchte, muss sie sich im selben Ordner befinden wie der kompilierte Build. – denchr