Ordner in die Jar packen?

Hallo

Ich möchte gerne das meine Jar Datei einen Ordner (Rechnungen) bei der erzeugung bekommt.
Leider hilft mir google nicht weiter.

Kann mir das jemand erklären?

lg
Zicky

Hi,
Warum soll eine Jar Datei einen Ordner enthalten ? Was soll damit erreicht werden ?

Gruß
Karl Heinz Marbaise

Der Frage vom @kama kann ich mich nur anschließen.

Darüber hinaus geht Dein Vorhaben prinzipiell nicht. Ein Jar ist erstmal ein Zip, und in einem Zip gibt es keine Ordner, nur Dateien mit Namen. Deise Namen können aber eine Ordnerstruktur abbilden. Wenn Du also einen Ordner “Rechnungen” haben willst musst Du mindestens eine Datei darin haben. [SPOILER]Dateien der Größe 0 mit Leerzeichen als Dateiname sind ja zumindest unter Linux kein Problem[/SPOILER]

bye
TT

Innerhalb der Ordnerstruktur eines Maven-Projektes kann man das schon abbilden. Lege einfach under src/main/resources einen Ordner Rechungen an. Der landet dann auch im Jar.

Aber ob das wirklich sinnvoll ist? In ein Jar kann man nämlich nichts hineinspeichern, nur herauslesen. Im Jar sollten deshalb eigentlich nur die Artefakte (class-Dateien, Konfigurationsdateien, Bilder etc.) liegen, die zum Laufen des Programms nötig sind.

Die Nutzdaten (und danach klingt der Ordnername “Rechnungen”) legt man üblicherweise woanders ab (Filesystem, Fileserver, Datenbanken o.ä.).

[quote=nillehammer]Die Nutzdaten (und danach klingt der Ordnername “Rechnungen”) legt man üblicherweise woanders ab (Filesystem, Fileserver, Datenbanken o.ä.).[/quote]oder im home-Verzeichnis des UsersFile targetFolder = new File(System.getProperty("user.home",".myApp/Rechnungen");
bye
TT

vielleicht meint der Themenstarter, dass er mit seinem Programm eine Verzeichnistruktur ausliefern will. Z.B. Ordner für config-Dateien, Loggings, etc…

Diese Struktur würde man dann aber vor der Auslieferung nicht in ein jar-Archiv packen, sondern in ein zip. Stichwort: maven-assembly-plugin

Mit welcher IDE arbeitest du?

[quote=SergeantPepper]Diese Struktur würde man dann aber vor der Auslieferung nicht in ein jar-Archiv packen, sondern in ein zip.[/quote]Was aber das Problem, dass leere Ordner nicht eingepackt werden können, nicht behebt…

Wenn der TO so was im Sinn hat sollten solche Strukturen (mit leeren Ordnern) bei der Installation oder beim ersten Start erzeugt werden.

bye
TPD

Nach meiner Erfahrung schon. Im Assembly Descriptor kann man das entsprechend konfigurieren.
Auszug aus dem Assembly Descriptor:

            <directory>${project.build.scriptSourceDirectory}/tmp</directory>
            <outputDirectory>/tmp</outputDirectory>
        </fileSet>

Mithilfe eines entsprechenden maven-assembly-plugin descriptors ist das möglich …auch wenn nicht gerade einfach…

wichtig dabei ist, dass das directory existiert…und in Maven projekten ist das nun mal das target Verzeichnis…

[XML]

/an-other-empty-folder
${project.basedir}/target

*



[/XML]
Somit bekommt man auch leere Verzeichnisse…

*** Edit ***

Hallo,

das Problem mit dem Ansatz ist, dass Du in src/main/scripts/tmp ein leeres Verzeichnis vorliegen hast…mit anderen Worten musst Du somit ein leeres Verzeichnis einchecken können in die Versionsverwaltung…Bei Subversion kein Problem…bei Git geht nicht…aus diesem Grund die Lösung über den Descriptor…somit werden die Erst im zip/tar.gz erzeugt…

Gruß
Karl Heinz marbaise

@kama : bist du sicher, dass das stimmt? Vielleicht reden wir auch aneinander vorbei…

Mein Snippet setzt voraus, dass tmp in src/main/scripts liegt. Dann entsteht durch den Assembly-Vorgang auf der ersten Ebene im zip, dass in target gebaut wird, das Verzeichnis tmp