ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
4310
4310
EMPFEHLEN
-
Hallo allseits,
ich kämpfe schon einige Zeit mit folgendem Problem rum: Ich hätte gerne einen ANT-Script, der mein Auslieferungsverzeichnis .\dist möglichst "vollständig" befüllt. Das heisst also insbesonders auch alle für ein Projekt notwendigen JAR's hineinkopiert.
Ich hab in Eclipse diverse Libraries definiert, meinetwegen eine welche LOG4J heisst, und auf den psysikalischen Pfad \irgendwas\log4j.jar verweist. Diese Libraries werden in Eclipse über Projekt->Properties->Java Build Path->Librariers dem jeweiligen Projekt zugewiesen.
Um das jeweilige Projekt ausliefern zu können, hab ich einen ANT-Tasks, der mir das Projekt-JAR im 'dist'-Verzeichnis erzeugt, so weit so gut. Allerdings muss ich danach immer daran denken, alle weiteren JAR's die ich sonst noch benötige, händisch in dieses Verzeichnis zu kopieren.
Soweit ich weiss wäre der 'normale' Weg, alle benötigten JARs vorher in ein Verzeichnis Namens "lib" zu kopieren, den ClassPath nur auf dieses Verzeichnis zu setzen, dann hat man alles beinand. Nur geht das bei uns nicht so einfach, da sich div. JARs durch andere Abteilungen ändern/ausgetauscht werden.
Es muss doch auch einen Weg geben, auf den gerade aktuellen ClassPath zuzugreifen, und die benötigten JARs egal wo sie liegen in das DIST-Verzeichnis zu kopieren? Wie?
Hier ein Ausschnitt meines derzeitigen ANT-Scripts:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
<target name="deploy" depends="init" description="generate the distribution"> <property name="dist" location="dist" /> <property name="build" location="bin" /> <property name="jarfile" location="${dist}/${ant.project.name}.jar" /> <!-- Create the distribution directory --> <mkdir dir="${dist}/" /> <!-- copy all files from etc --> <mkdir dir="${dist}/etc"/> <copy todir="${dist}/etc" > <fileset dir="${etc}"></fileset> </copy> <tstamp> <format property="creationdate" pattern="yyyy-MM-dd HH:mm:ss" locale="de" offset="1" unit="hour"/> </tstamp> <delete file="${jarfile}" /> <jar jarfile="${jarfile}" basedir="${build}" manifest="MANIFEST.MF"> </jar> </target>
lg., nes
-
23.11.06 18:07 #2
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Schau dir mal Ivy an:
http://www.jayasoft.org/ivy
Ivy ist ein Dependency Manager der auch in einen Ant build integriert werden kann. Du configurierst in Ivy einmal deine Abhängigkeiten und bei einem Build sicht sich Ivy die entsprechenden jars von den angegebenen Quellen selbst zusammen.
Eine andere Alternative wäre beispielsweise Eclipse Buckminister welches sich auch um genau dieses Problem zur Buildzeit kümmer
http://wiki.eclipse.org/index.php/Buckminster
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
-
Falls jemand ähnliche Probleme hat ...
Ich hab' jetzt etwas gefunden, was meine Anforderungen noch viel einfacher abdeckt, und zwar ein Eclipse-Plugin mit dem überhaupt keine zusätzlichen JARs ausgeliefert werden müssen, mittels einem inkludiertem Class-Loader werden Jars in Jars richtig behandelt, die entsprechenden Jars werden zum Compilierungszeitpunkt geholt, egal von wo ... sieht alles sehr vielversprechend aus:
http://fjep.sourceforge.net/
Wie einfach das in der Anwendung ist sieht man hier: http://fjep.sourceforge.net/fjeptutorial.html
Jars, External-Jars, User-Libraries, System-Libraries, Classes-Folders and Project-Exports werden unterstützt, man kann in das eportierte sogenannte "Fat-Jar" auch das Manifest sowie eigene Verzeichnise und Files exportieren ... perfekt.
lg., nes
-
27.11.06 23:44 #5
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo!
Das FatJar Plugin packt einfach alle abhängigen Jars aus und baut daraus dann ein einziges "fettes" Jar das die eigenen Klassen und die der Third-Party libs enthält... insofern lieferst du schon noch die Libs aus eben nur in anderer Form.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
-
Hallo Thomas!
Ja, schon klar daß es genau das tut. Vielleicht hab ich mich da auch einfach etwas unklar ausgedrückt, ich brauch ja auch nur den Stand der eingebundenen Libs zum Erstellungszeitpunkt des fertigen Programmes.
Ich versuch's nochmals, besser zu erklären
Ich habe im Eclipse eine Bibliothek namens eigene_klassen_aus_abteilung_xyz welche auf ein JAR im Netzlaufwerk verweist. Dieses Jar wird u.U. während ich noch entwickle auch schon mal geändert, und zwar nicht durch mich.
Wenn ich jetzt mit der Entwicklung fertig bin, baue ich die fertige Auslieferung, und darf nicht vergessen, den gerade aktuellen Stand von "eigene_klassen_aus_abteilung_xyz.jar" dazuzukopieren.
Und genau das war mein Problem. Und mit dem FatJar-Plugin kann ich genau das lösen, ohne daß ich mich weiter darum kümmern muss. Das holt sich die benötigten Klassen im gerade aktuellen Stand
aus den Jar's der Netzlaufwerke, ich kann nicht mehr darauf vergessen. 
lg., nes
Ähnliche Themen
-
[Eclipse] Datei über Kommandozeile in Eclipse öffnen
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 11.06.10, 00:28 -
Eclipse & JNI - UnsatisfiedLinkError in nativer Methode in Eclipse, aber nicht extern
Von Prontector im Forum JavaAntworten: 0Letzter Beitrag: 11.05.09, 12:46 -
Eclipse: Status des Packet Explorers nach Eclipse-Start
Von DarthShader im Forum JavaAntworten: 5Letzter Beitrag: 02.11.07, 09:37 -
Eclipse basierte JSF Tools / Eclipse Visual JSF Page Designer
Von Thomas Darimont im Forum Java Technology NewsAntworten: 0Letzter Beitrag: 07.03.07, 00:20 -
[Eclipse] JFace kommt mit ein paar netten Layout Gehilfen in Eclipse 3.2 :)
Von Thomas Darimont im Forum JavaAntworten: 0Letzter Beitrag: 23.11.06, 23:34





Zitieren


Login





