(Eclipse)Ant Script, .jar Datei erstellen mit MANIFEST.MF

prototype0815

Aktives Mitglied
Servus und Hallo,

also ich suche nunmehr schon seit ca. 2 Tagen nach einer Lösung für mein Problem. ich bin Java Entwickler und entwickle mit Eclipse (Version: Kepler Service Release 1 Build id: 20130919-0819).

wir benötigen geschäftlich von unseren Java Projekten eine .jar datei um das Applet z.B. im Browser zu starten. Wenn ich nun mittels Eclipse eine .jar Datei erstelle, mit "Export" und dort meine MANIFEST.MF angebe wird die .jar genau so erstellt wie wir sie benötigen.

Meine Aufgabe ist nun mittels Ant-Script diese funktion nach zu bauen, sodass diese .jar
1. nicht von hand erstellt werden muss und 2. soll sie bei jedem "Clean" bzw "Build" erstellt werden.

Ich schaffe es nun schon mit hilfe von einer build.xml (die autom. als ant script ausgeführt wird) und {meinProjekt} --> "Properties" --> "Builders" --> "new Ant Build", dass meine .jar datei erstellt wird und bei jedem "Clean, Build" ausgeführt wird.

hier meine Ordner Struktur:

795287-PIC.png


hier der inhalt meiner build.xml
[XML]<?xml version="1.0"?>
<project name="make jar" default="jarbuilder"> <!-- default gibt das "default" target an -->
<description>
Kompiliert den aktuellen Stand des Projekts und verpackt ihn in ein .jar-Archiv
</description>

<target name="jarbuilder">
<jar destfile="maxi66.jar" basedir="bin" excludes="*.html,*.applet, *.jbx, *.MF">
</jar>
</target>
</project>[/XML]
ich habe nun mal nur den source code drin gelassen der sicher funktioniert, wie man in der Ordner Struktur sieht liegt meine MANIFEST.MF direkt im Projekt-Ordner und soll nach der erstellung der .jar datei im META-INF Ordner liegen


hier mall eine entpackte .jar datei, die mittels "Export" erstellt wurde
795290-PIC.png


die beim Export angegebene MANIFEST.MF liegt hier schon im META-INF ordner.


was ich schon ausprobiert habe ist: Manifest generieren lassen nach meinen Vorstellungen, metainf + Manifest generieren, vorhandene Manifest in META-INF kopieren lassen, aber nichts hat geholfen.

Hoffentlich sind meine Angaben detailliert genug, falls nicht bitte bescheid geben.
Ich würde mich riesig freuen wenn ihr mir helfen könnt. :toll:

p.s. Ich bin totaler anfänger was XML-Scripte angeht und hab auch keine Ahnung von Ant Scripten, falls es da überhaupt einen unterschied gibt. :bahnhof:

Vielen Dank
Gruß proto
 

prototype0815

Aktives Mitglied
EDIT:

ich glaubs nicht, kaum ein Forums-post eingestellt schon funktioniert es. Ich kann auch nicht sagen warum es geht, ich hab nämlich meinen Quelltext von gestern Mittag nochmal rein kopiert aber nichts dran geändert und siehe da, es geht !!

.jar wird erstellt, mit META-INF ordner, und eine MANIFEST.MF wird darin generiert :toll:


jetzt muss ich folgende erweiterung schaffen, .jar generieren und vorhandene MANIFEST.MF in den META.INF hinein kopieren.
 
Zuletzt bearbeitet:

prototype0815

Aktives Mitglied
jetzt muss ich folgende erweiterung schaffen, das Ant Script soll eine .jar generieren und vorhandene MANIFEST.MF automatisch in den META.INF hinein kopieren lassen.

bin noch nicht weiter gekommen...sieht aus als hätte niemand ne Idee für mich ;(
 

knilch

Bekanntes Mitglied
Hi,
Frage:
Du schreibst, dass Manifest.mf im Projektordner ist, wieso machst, du einen exclude im jarbuilder- target?
<target name="jarbuilder">
<jar destfile="maxi66.jar" basedir="bin" excludes="*.html,*.applet, *.jbx, *.MF">
</jar>
</target>
Das Manifest.mf kannst du mit
[XML]
<copy todir="${release.dir}/">
<fileset dir="${src.dir}/" includes="**/*.mf"/>
</copy>
[/XML]
in das Verzeichnis META-INF kopieren. Wobei {release.dir} das Verzeichnis ist, welches erstellt wird (z.B. META-INF) und {src.dir} das Verzeichnis ist, wo manifest.mf abgelegt ist.
 
Zuletzt bearbeitet:

prototype0815

Aktives Mitglied
hi, also wie man in meiner Ordner Struktur erkennen kann liegt eine vorgefertigte Manifest.MF im Projektordner.

wenn eine "jar Datei" erstellt wird, wird ein META-INF Ordner erstellt für eine etwaige Manifest datei, die danach generiert wird.

wenn ich den exclude weg lasse dann wird die vorfertigte Manifest.MF zwar mitkopiert, aber nicht in den META-INF ordner. und ausserhalb des META-INF ordners bringt mir diese Manifest.MF gar nix.

ich hab mehrere sachen versucht das die Manifest.MF nach der Erstellung der jar Datei in den META-INF Ordner rein kopiert wird, aber ohne erfolg. irgendwie auch sinnig, weil wenn die jar Datei generiert wurde kann man sich diese wie einen zip Ordner vorstellen und einfach so etwas dort hinein zu kopieren geht anscheinend nicht.
 

knilch

Bekanntes Mitglied
Hi,
Ok, Du erstellst ein jar, dazu wird ein META-INF Ordner erstellt und das Manifest.mf soll dann in den Ordner META-INF kopiert werden.
Die copy- Direktive
[XML]
<copy todir="${release.dir}/">
<fileset dir="${src.dir}/" includes="**/*.mf"/>
</copy>
[/XML]
hast du schon probiert?
Wenn die Manifest.mf, die nach dem Erstellen des jar- File generiert wird, auch im selben Ordner abgelegt, wie die Manifest.mf die schon vorhanden ist würde das so aussehen:
(${src.dir} ist der Projektordner/src; ${META-INF} ist Projektordner/META-INF) in diesem Fall liegt Manifest.mf im Verzeichnis: Projektordner/src falls es anders sein soll, muss der Pfad angepasst werden.
[XML]
<target name="jarbuilder">
<jar destfile="maxi66.jar" basedir="bin" excludes="*.html,*.applet, *.jbx, *.MF">
<manifest>
<attribute name="Main-Class" value="${main-class}"/>
</manifest>
</jar>
<!-- Die neue Maifest.mf sollte hier nun bereit stehen , um sie in META-INF- Ordner zu kopieren-->
<copy todir="${META-INF}">
<fileset dir="${src.dir}" includes="*.mf" />
</copy>
</target>
[/XML]
 
Zuletzt bearbeitet:

prototype0815

Aktives Mitglied
also mein aktueller Code sieht so aus:
[XML]<?xml version="1.0"?>
<project name="make jar" default="jarbuilder"> <!-- default gibt das "default" target an -->
<description>
Kompiliert den aktuellen Stand des Projekts und verpackt ihn in ein .jar-Archiv
</description>

<target name="jarbuilder">
<jar destfile="maxi6.jar" basedir="bin" excludes="*.html,*.applet, *.jbx, *.MF">
<manifest>
<attribute name="Main-Class" value="mainApplet"/>
<attribute name="Trusted-Only" value="true"/>
<attribute name="Permissions" value="all-permissions"/>
<attribute name="Application-Name" value="Paul Maxi6"/>
</manifest>
</jar>
</target>
</project>[/XML]



die dadurch generierte jar hab ich entpackt und hier mal einen Screenshot vom META-INF Ordner gemacht: die anderen Dateien einfach ignorieren, ich glaube die sind vom signieren des Applets

798789-PIC.png



und hier der Inhalt der generierten Manifest.MF

798790-PIC.png



Es funktioniert eigentlich alles ganz annehmbar, nur wäre es schön wenn man die Manifest.MF von Hand ändern könnte, damit man nicht bei jeder Änderung den Sourcecode der build.xml ändern muss. Deshalb will ich die vorhandene Manifest.MF reinkopieren lassen.
Ich hab nun folgenden code versucht:

[XML]<?xml version="1.0"?>
<project name="make jar" default="jarbuilder"> <!-- default gibt das "default" target an -->
<description>
Kompiliert den aktuellen Stand des Projekts und verpackt ihn in ein .jar-Archiv
</description>

<target name="jarbuilder">
<jar destfile="maxi66.jar" basedir="bin" excludes="*.html,*.applet, *.jbx, *.MF">

</jar>
<copy todir="${META-INF}/">
<fileset dir="src" includes="**/*.mf"/>
</copy>
</target>
</project>[/XML]


so sollte die Manifest aussehen:

798792-PIC.png



und so sieht sie tatsächlich aus:


798791-PIC.png




die vorhandene Manifest wird also nicht hinein kopiert....was hab ich falsch gemacht ?
 

knilch

Bekanntes Mitglied
Hi,
Versuch es mal damit:
[XML] <target name="jarbuilder">
<jar destfile="${META-INF}/maxi66.jar" basedir="bin" excludes="*.html, *.applet, *.jbx, *.MF">
<manifest>
<attribute name="Main-Class" value="mainApplet"/>
<attribute name="Trusted-Only" value="true"/>
<attribute name="Permissions" value="all-permissions"/>
<attribute name="Application-Name" value="Paul Maxi6"/>
</manifest>

</jar>
<copy todir="${META-INF}">
<fileset dir="${src.dir}" includes="**/*.mf" excludes="**/*.java"/>
</copy>
</target> [/XML]
 
Zuletzt bearbeitet:

prototype0815

Aktives Mitglied
hab meinen code um deinen ge-updated
[XML]<?xml version="1.0"?>
<project name="make jar" default="jarbuilder"> <!-- default gibt das "default" target an -->
<description>
Kompiliert den aktuellen Stand des Projekts und verpackt ihn in ein .jar-Archiv
</description>

<target name="jarbuilder">
<jar destfile="${META-INF}/maxi66.jar" basedir="bin" excludes="*.html, *.applet, *.jbx, *.MF">
<manifest>
<attribute name="Main-Class" value="mainApplet"/>
<attribute name="Trusted-Only" value="true"/>
<attribute name="Permissions" value="all-permissions"/>
<attribute name="Application-Name" value="Paul Maxi6"/>
</manifest>

</jar>
<copy todir="${META-INF}">
<fileset dir="${src.dir}" includes="**/*.mf" excludes="**/*.java"/>
</copy>
</target>
</project>[/XML]



und diese ausgabe bekommen:


Buildfile: D:\Paul\8306\build.xml

jarbuilder:
[jar] Building jar: D:\Paul\8306\${META-INF}\maxi66.jar

BUILD FAILED
D:\Paul\8306\build.xml:17: D:\Paul\8306\${src.dir} does not exist.

Total time: 4 seconds



Hey Knilch, ich will dir hier schon mal ein riesen Dank aussprechen für die Mühe die du dir gibts :toll::applaus:
 

knilch

Bekanntes Mitglied
Hey Knilch, ich will dir hier schon mal ein riesen Dank aussprechen für die Mühe die du dir gibts
wenn's hilft, gerne :)

BUILD FAILED
D:\Paul\8306\build.xml:17: D:\Paul\8306\${src.dir} does not exist.
das heisst, im Build.xml ist kein Property definiert, das src.dir heisst...
versuch es mal so:
[XML]
<project name="Test" basedir="." default="compile">
<property name="src.dir" value="src/" /> <!-- hier muss das Verzeichnis stehen, in dem das Manifest.mf abgelegt ist in diesem Beispiel ist es ./src im Projektverzeichnis -->
...
<target name="jarbuilder">
<jar destfile="${META-INF}/maxi66.jar" basedir="bin" excludes="*.html, *.applet, *.jbx, *.MF">
<manifest>
<attribute name="Main-Class" value="mainApplet"/>
<attribute name="Trusted-Only" value="true"/>
<attribute name="Permissions" value="all-permissions"/>
<attribute name="Application-Name" value="Paul Maxi6"/>
</manifest>

</jar>
<copy todir="${META-INF}">
<fileset dir="${src.dir}" includes="**/*.mf" excludes="**/*.java"/>
</copy>
</target>
...
<project/>
[/XML]
 
Zuletzt bearbeitet:

prototype0815

Aktives Mitglied
musste den Sourcecode etwas abändern weil Fehler aufgetaucht sind. Ich hoffe das er trotzdem so passt wie du es wolltest Knilch
[XML]<?xml version="1.0"?>
<project name="make_jar" basedir="." default="jarbuilder">
<property name="src.dir" value="src/" /> <!-- hier muss das Verzeichnis stehen, in dem das Manifest.mf abgelegt ist in diesem Beispiel ist es ./src im Projektverzeichnis -->

<target name="jarbuilder">
<jar destfile="${META-INF}/maxi66.jar" basedir="bin" excludes="*.html, *.applet, *.jbx, *.MF">
<manifest>
<attribute name="Main-Class" value="mainApplet"/>
<attribute name="Trusted-Only" value="true"/>
<attribute name="Permissions" value="all-permissions"/>
<attribute name="Application-Name" value="Paul Maxi6666"/>
</manifest>

</jar>
<copy todir="${META-INF}">
<fileset dir="${src.dir}" includes="**/*.mf" excludes="**/*.java"/>
</copy>
</target>

</project>[/XML]


also dieser Code macht folgendes: erstellt eine .jar mit generierter (nicht kopierter) Manifest.MF, in einen erstellten Ordner "${META-INF}" in meinem Projekordner "8327".

Sry aber irgendwie komplett anders als ich es will ;(
 

knilch

Bekanntes Mitglied
Also,
Dieser Teil vom Build.xml:
[XML]
<target name="jarbuilder">
<copy todir="bin/META-INF">
<fileset dir="${src.dir}" includes="**/*.mf" excludes="**/*.java"/>
</copy>

<jar destfile="maxi66.jar" basedir="bin" excludes="*.html, *.applet, *.jbx, *.MF">
<manifest>
<attribute name="Main-Class" value="mainApplet"/>
<attribute name="Trusted-Only" value="true"/>
<attribute name="Permissions" value="all-permissions"/>
<attribute name="Application-Name" value="Paul Maxi6"/>
</manifest>
</jar>
</target>
[/XML]
kopiert das Maifest.mf in das META-INF- Verzechinis und generiert dann das jar. Wenn nun das jar (maxi66.jar) geöffnet wird, ist dort ein META-INF- Verzeichnis und in diesem Verzeichnis ist die Datei Manifest.mf mit folgendem Inhalt vorhanden.
Code:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.4
Created-By: 1.7.0_25-b17 (Oracle Corporation)
Main-Class: mainApplet
Trusted-Only: true
Permissions: all-permissions
Application-Name: Paul Maxi6
ist es das was du möchtest?
 
Zuletzt bearbeitet:

prototype0815

Aktives Mitglied
... Wenn nun das jar (maxi66.jar) geöffnet wird, ist dort ein META-INF- Verzeichnis und in diesem Verzeichnis ist die Datei Manifest.mf ...


so, und genau so benötige ich es. Mit meinen Worten: In der .jar ist ein META-INF Verzeichnis und da hinein soll die Manifest.MF kopiert werden, diese liegt fertig vorhanden im "src" Verzeichnis ( kann aber auch von mir in den Projekt Ordner gelegt werden, oder sonst irgendwo hin ) der Pfad sieht so aus....
D:\"Workspace"\"Projektname"\src
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P Eclipse - Ant Skript - jar erstellen mit Referenced Libraries - build.xml XML & JSON 5
P Eclipse Rinzo - Schema muss mit DOCTYPE "root" übereinstimmen XML & JSON 0
S XML file lässt sich in Eclipse nicht erstellen XML & JSON 2
P "XPath is deprecated" XML eclipse XML & JSON 3
N Eclipse - XSD zu Javacode XML & JSON 2
G jdom-Klassen in Eclipse importieren XML & JSON 2
E web.xml bei Eclipse JSP-Webanwendung XML & JSON 2
ruutaiokwu jaxb eclipse plugin... XML & JSON 3
R XML-Validierung mittels XSD unter Eclipse XML & JSON 2
D xsd->java mit Eclipse?! oder wie? XML & JSON 27
S Graphischer XML / XSD Editor Plugin Eclipse XML & JSON 1
T jdom.jar als Relativer Pfad in Eclipse einbinden XML & JSON 4
H Einstieg in das Eclipse Modeling Framework XML & JSON 27
D Probleme mit Eclipse Modeling Framework (EMF) XML & JSON 2
P SAXBuilder wird von Eclipse nicht als ObjektTyp erkannt XML & JSON 3
D XML-file mit Eclipse erstellen + Namespaces XML & JSON 2
R Script in XSLT einbinden XML & JSON 2
T Tags in XML Datei mit Java erstellen XML & JSON 3
S XML Datei speichern nicht möglich XML & JSON 13
M Objekt zu jsonArray in .json datei hinzufügen ? XML & JSON 3
J Object in JSON Datei einlesen und als neues Object erzeugen (in ein Object Array) XML & JSON 29
I Mit Hibernate eine XML-Datei in eine Tabellenspalte einlesen. XML & JSON 1
MiMa Buch Metadaten aus XML Datei parsen XML & JSON 48
J Auslesen der Länge einer XML-Datei in Android Studio XML & JSON 8
R xlsx-Datei mit Apache POI einlesen XML & JSON 18
S Validierung einer XML-Datei - Führende Leerzeichen und Tabs XML & JSON 10
S CSV Datei einlesen und XML Ausgeben XML & JSON 2
U jar Datei mit ant erstellen XML & JSON 1
P wie kriege ich eine *.dtd Datei mit in die ausführbare *.jar? XML & JSON 2
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
D XML-Datei per Button erstellen XML & JSON 3
K JAR-File mit XML-Datei XML & JSON 1
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
I Liste in YAML Datei speichern und wieder auslesen XML & JSON 1
A Leeres Array beim Auslesen von XML-Datei XML & JSON 4
E JTreedaten in eine XML Datei speichern XML & JSON 3
D Int-Werte in XML-Datei schreiben (DOM) XML & JSON 2
B xsd-Datei ins jar file XML & JSON 5
T Formulardaten in XML Datei speichern XML & JSON 5
H Wsdl datei XML & JSON 2
D Große XML-Datei in einzel Dateien splitten XML & JSON 3
S Neue Inhalte in XML-Datei einfügen XML & JSON 0
S JDOM XML Datei darstellen Fehler! XML & JSON 2
S Xml File für den Aufbau einer anderen Xml Datei XML & JSON 6
M XML-Datei mit JAXB und 2 Namespaces XML & JSON 0
J XML - Datei wird nicht ganz angezeigt XML & JSON 2
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
K Beim Parsen einer XML-Datei Connection timed out XML & JSON 4
E ResultSet als XML Datei speichern XML & JSON 7
M XStream, CSV Datei XML & JSON 9
A Frage zu bestehender XML Datei XML & JSON 6
A Simple Constructor Injection Datei-Pfad XML & JSON 6
K Einlesen eines Parameters aus HTML-Datei XML & JSON 4
Maxim6394 Lesen/Schreiben von XML Datei XML & JSON 9
A XML datei lesbar speichern (eingerückt) XML & JSON 7
M XML Datei Parsen XML & JSON 4
Airwolf89 HTML Datei mit SAXBuilder laden hängt sich auf XML & JSON 4
N Java Code aus XML Datei generieren XML & JSON 8
D Aus lesen einer XML-Datei ( 1 root, 3 childs) XML & JSON 7
D Wie XML Datei einlesen und HTML entities übernehmen? XML & JSON 3
R XLM Datei lesen Ändern (kompliziertes Search and Replace) und Speichern XML & JSON 12
K Kurze XML Datei Parsen XML & JSON 5
S XSD-Datei zulässige Werte auslesen XML & JSON 3
M XML Datei heapspace erreicht XML & JSON 3
M Große Datei auslesen/in dieser suchen XML & JSON 2
S Konforme XML Datei über XSD erstellen XML & JSON 2
M RSS-Datei auslesen von Yahoo Webservice XML & JSON 4
T Inhalt einer .xml Datei auf Javaoberfläche wiedergeben XML & JSON 4
M XML Datei drucken XML & JSON 8
T Daten aus Programm in XML Datei speichern XML & JSON 2
D XSD Datei erstellen XML & JSON 4
L [SAX] Geschachtelte XML Datei parsen XML & JSON 3
E XML Datei mit DOM auslesen (Text mit Attributen) XML & JSON 2
G txt. Datei in xml datei konvertieren XML & JSON 21
K XML Datei in ein Java package „einbinden" XML & JSON 3
L Reihenfolge beim xml Datei parsen einhalten? XML & JSON 8
L xml Datei parsen ohne End-Tag XML & JSON 6
C if-Abfrage mit Datei Variable aus XML-Datei XML & JSON 2
sylo Beim Erzeugen einer XML Datei auch die XML Struktur erzeugen? XML & JSON 11
sylo DOM Document in XML Datei schreiben XML & JSON 5
F XML Datei in Java einlesen XML & JSON 4
J Objektstruktur aus XML-Datei erzeugen XML & JSON 21
D ID's aus XML Datei rauslesen und in Java ausgeben XML & JSON 7
E XML Datei einlesen und Elemente in der Console ausgeben XML & JSON 6
N value Wert einer XML Datei mit JAVA bearbeiten XML & JSON 21
ARadauer Aus XML Datei Objekte erstellen... XML & JSON 3
N MalformedByteSequenceException bei Lesen aus XML Datei XML & JSON 2
H xml-Datei mit Attributen einlesen XML & JSON 3
A XML-Datei: Ab wann kritische Größe erreicht? XML & JSON 4
multiholle XML Datei elegant verarbeiten XML & JSON 14
M XMI-Datei auslesen XML & JSON 4
T Ließt keine XML Datei XML & JSON 2
R JAXB: Aus einem Vector oder List XML Datei erstellen XML & JSON 1
J XML-Datei ein Array einlesen XML & JSON 10
M xml - datei erstellen XML & JSON 2
T Wie einen String(XML Inhalt) in eine XML Datei speichern? XML & JSON 8
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
H XML-Datei in einzelne XML-Dateien zerlegen XML & JSON 2
G Tags oder Zeilen der Not-Validen XML-Datei XML & JSON 7
C Suche in XML-Datei XML & JSON 6

Ähnliche Java Themen

Neue Themen


Oben