Dateiparameter
Nach den Optionen kann eine beliebige Anzahl von Datei- oder Verzeichnispfaden
angegeben werden. Was im Einzelnen geschieht, hängt vom Dateityp ab. Möglich
sind Klassenangaben, Dateien, Verzeichnisse, Musterausdrücke sowie
spezielle Parameter (Pseudo-Optionen).
Grundsätzlich wird eine Datei nur in das Zielarchiv übernommen, wenn sie noch
nicht darin enthalten ist; die Reihenfolge der Parameter ist also relevant.
- Klassen:
Die Angabe von Klassen erfolgt in der Form
klassenname.class , wobei
klassenname der vollständige Klassenname ist. Der
Classpath wird nach der Klassendatei durchsucht. Wurde sie gefunden, kopiert
Autojar sie in das Zielarchiv, untersucht dann den Bytecode rekursiv
nach weiteren verwendeten Klassen und übernimmt diese ggf. ebenfalls.
Klassen aus der Java-Runtimebibliothek werden nicht in das Archiv aufgenommen.
Die letzte Komponente des Klassennamens kann Musterzeichen * und ?
enthalten. In diesem Fall werden alle Klassen gesucht und eingefügt, die
dem Muster entsprechen. So übernimmt z.B. a.b.*.class alle
Klassen aus dem Package a.b .
Ein Muster der Form **.class bewirkt eine rekursive Kopie.
Beispiel: Mit dem Parameter a.b.**.class erreicht man, dass
alle Klassen des Packages a.b und alle Klassen in dessen
Unterpackages (a.b.x , a.b.x.y , a.b.z
usw.) übernommen werden.
- .jar- und .war - Dateien:
Alle in dem Archiv enthaltenen Dateien werden in das Zielarchiv
eingefügt, mit Ausnahme des "META-INF"-Verzeichnisses. Klassendateien
werden nach anderen verwendeteten Klassen durchsucht wie oben beschrieben.
- .zip - Dateien:
Wie .jar-Dateien, jedoch werden Klassendateien nicht speziell
behandelt.
- Andere Dateien:
Bezeichnet der Pfad eine existierende Datei, wird diese ins Archiv
übernommen. Wenn die Datei nicht existiert, der Pfad relativ ist und ein
Suchpfad für Nicht-Klassen-Dateien angegeben wurde (Option -p oder -b),
wird die Datei über den Pfad gesucht und ggf. an das Archiv angehängt.
Wie bei Klassendateien kann die letzte Pfadkomponente Musterzeichen
enthalten. Wenn die letzte Komponente
** lautet (z.B.
a/b/** ), wird das entsprechende Verzeichnis (a/b )
gesucht und rekursiv, mit allen Dateien und Unterverzeichnissen, in das
Zielrchiv kopiert.
Man beachte, dass es normalerweise nicht sinnvoll ist, Klassendateien
mit einem absoluten Dateipfad anzugeben. Autojar würde sie wie normale
Dateien behandeln, also ohne den Bytecode nach referenzierten Klassen
zu durchsuchen.
- Verzeichnisse:
Verzeichnisse werden rekursiv mit allen Dateien und Unterverzeichnissen
angehängt, ausgenommen solche, deren Namen einem mit
-X
angegebenen Muster entsprechen (siehe Spezielle Parameter). Alle Dateien, auch
Klassendateien, werden als normale Dateien betrachtet.
|