Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich arbeite mich gerade etwas in Maven2 ein und hab da eine Frage.
Mein damaliges Ant-Projekt läuft soweit schon fast komplett in Maven... aber ich hätte gerne noch ein paar Sachen, wo ich keine Antwort gefunden habe.
Darum mal eine Frage.
In Ant hatte ich damals ein Task, wo ich den HSQL Datenbankmanager gestartet habe. Der hat einfach die Java-Klasse aufgerufen und es ging.
Geht das in Maven auch irgendwie? Weil irgendwie dreht sich da ja alles um Lifecycle-Phasen und ich will eigentlich nicht andauernd den Datenbank-Manager aufrufen. Das betrifft auch noch ein paar mehr Tasks, wie z.B. der Shemaexport von Hibernate usw. Der wird jetzt andauernd aufgerufen (ist in process-classes), obwohl ich den nur optional brauche. Der braucht aber natürlich die abhängigen Phasen davor (compile, usw.)
Wie gesagt, so an sich funktioniert das bestens. Es geht an sich nur um die Frage, ob ich Sachen Definieren kann die mit diesem Build-Lifecycle überhaupt nichts zu tun haben. Also quasi so wie in Ant.
Nehmen wir den Shemaexport als Beispiel. Der ist ja in Process-Classes eingetragen, im Antrun Teil. D.h. wenn ich mvn package aufrufe, wird auch dieses Process-Classes aufgerufen. Nun ist meine Frage, ob ich das auch irgendwo eintragen kann, das es immer nur optional ist. D.h. ich muss es explizit über die Kommandozeile aufrufen, ansonsten wird es nie aufgerufen. Aber wenn ich es aufrufe, muss er halt erst compilieren usw...
Im Bereich Dependency kann man dann noch die Datenbank einsetzen, die man nutzt....
Der Outputfilename muss nicht definiert werden, kann man aber....
Weiterhin solltest Du dicht mit dem Konzept: Konvention vor Konfiguration genau auseinander setzen, da Du an vielen Stellen noch Konfigurationen vornimmst die nicht notwendig sind und vor allem aber hinderlich sind....
Warum rust Du das exec-maven-plugn zur Erstellung eines ".jar" auf ? Schon mal mvn package versucht ? Dein package type ist ja schon "jar"....
Warum nutzt Du das maven-clean-plugin, um noch ein "resources/data" verzeichnis zu löschen? Das ziel Verzeichnis für Operationen von Maven ist nun mal "target" und ein mvn clean löscht das alles ....
Weiterhin sehe ich die Konfiguration des maven-dependency-plugin um ein "dist/dependency" Verzeichnis mit den Dependencies zu füllen ? Hast Du dich schon mal mit dem Maven - Assembly PlugIn beschäftigt...
Die gibtst dem maven-jar-plugin wieder ein zusätzliches Verzeichnis ".../dist" ? Warum nicht die Maven Konvention "../target" nutzen ? und wozu gibt es mvn install bzw. mvn deploy ?
Wenn Du schon PlugIns konfigurierst (compiler plugin) dann mach die Konfiguration in einem einzigen Abschnitt und nicht über mehrere Bereiche Verteilt....
Könntest Du vielleicht noch schreiben was das für ein Projekt wird ? Web Application ? EJB ? JBoss / Tomcat etc. Projekt ?
Vieleicht kann ich da noch etwas zu schreiben ....
Tue ich nicht. Das maven exec Plugin startet das jar. Erstellen tue ich es mit package
kama hat gesagt.:
Warum nutzt Du das maven-clean-plugin, um noch ein "resources/data" verzeichnis zu löschen? Das ziel Verzeichnis für Operationen von Maven ist nun mal "target" und ein mvn clean löscht das alles ....
Weil in meiner hibernate.cfg.xml als HSQL File Datenbank file://resources/data drinnen steht. Und wenn HSQL dann die Datenbanken anlegt, landen die im resources/data Ordner und nicht im target-Ordner. Den kopiere ich dann in mein dist-Verzeichnis
kama hat gesagt.:
Weiterhin sehe ich die Konfiguration des maven-dependency-plugin um ein "dist/dependency" Verzeichnis mit den Dependencies zu füllen ? Hast Du dich schon mal mit dem Maven - Assembly PlugIn beschäftigt...
Ja, da war ich so erfolgreich, dass es mir irgendwie ein jar erstellt hat, was richtig fett war und nicht lief
kama hat gesagt.:
Die gibtst dem maven-jar-plugin wieder ein zusätzliches Verzeichnis ".../dist" ? Warum nicht die Maven Konvention "../target" nutzen ? und wozu gibt es mvn install bzw. mvn deploy ?
Ich dachte mvn install installiert das Projekt in das Maven Repo? deploy kenne ich noch nicht.
kama hat gesagt.:
Wenn Du schon PlugIns konfigurierst (compiler plugin) dann mach die Konfiguration in einem einzigen Abschnitt und nicht über mehrere Bereiche Verteilt....
- ich will die Hibernate.cfg.xml NICHT im jar drinnen haben. Hier will ich ggf. Optionen ändern. Darum soll die extern in einem Ordner liegen (darum das angepasste copy-resources)
- die Datenbanken die mir der Shemaexport erstellt, landen ja, wie gesagt, nicht im Target-Ordner (file Definition in der Hibernate.cfg). Die Anwendung soll aber aus dem dist-Ordner (der ja im target-Ordner liegt) komplett startbar/auslieferbar sein. Dazu brauche ich ja die config, die Datenbank, die Deps und das jar. (darum das angepasste clean- und das angepasste jar-Plugin)
- ich will die Deps nicht im jar drinnen haben. Wenn ich ein Update schicke, muss ich ja nicht jedesmal die Deps neu mitschicken. So ist das jar nur 90kb groß, statt 6MB. (darum hab ich mich nach Tests nicht weiter mit assembly beschäftigt)
edit:
Nebenbei steht immernoch die Frage nach separat aufrufbaren Tasks
Warum nutzt Du das maven-clean-plugin, um noch ein "resources/data" verzeichnis zu löschen? Das ziel Verzeichnis für Operationen von Maven ist nun mal "target" und ein mvn clean löscht das alles ....
Weil in meiner hibernate.cfg.xml als HSQL File Datenbank file://resources/data drinnen steht. Und wenn HSQL dann die Datenbanken anlegt, landen die im resources/data Ordner und nicht im target-Ordner. Den kopiere ich dann in mein dist-Verzeichnis
Hm...da wäre zu überlegen, ob Du das Konzept umstellst...Du möchtest die Datenbank ja zu deiner Applikation haben...somit würde ich es so machen und ein tar.gz oder ZIP File ausliefern, wo die Datenbank mit enthalten ist...Dann kannst Du einfach mehrere Versionen der Applikation parallel laufen lassen...
-MacNuke- hat gesagt.:
kama hat gesagt.:
Weiterhin sehe ich die Konfiguration des maven-dependency-plugin um ein "dist/dependency" Verzeichnis mit den Dependencies zu füllen ? Hast Du dich schon mal mit dem Maven - Assembly PlugIn beschäftigt...
Ok. Dann hast Du schlicht die Dependencies mit genommen...Du kannst ja ein Paket machen (z.B. zip-Datei) wo alles drin ist eines nur dein Jar etc.....
-MacNuke- hat gesagt.:
kama hat gesagt.:
Die gibtst dem maven-jar-plugin wieder ein zusätzliches Verzeichnis ".../dist" ? Warum nicht die Maven Konvention "../target" nutzen ? und wozu gibt es mvn install bzw. mvn deploy ?
Ja Du hast Recht...ich habe mich vertan...mvn package paketiert alles im target Verzeichnis...deploy installiert im remote Repository...Das dist Verzeichnis ist aber nicht notwendig...denn mit mvn package wird alles erstellt und im target Ordner abgelegt.
-MacNuke- hat gesagt.:
kama hat gesagt.:
Wenn Du schon PlugIns konfigurierst (compiler plugin) dann mach die Konfiguration in einem einzigen Abschnitt und nicht über mehrere Bereiche Verteilt....
Ich gebe Dir den Tipp versuche das erst OHNE Netbeans oder sonst wen zu erstellen und wenn Du verstanden hast wie es funktioniert kann man sich die Arbeit ruhig abnehmen lassen...
-MacNuke- hat gesagt.:
- ich will die Hibernate.cfg.xml NICHT im jar drinnen haben. Hier will ich ggf. Optionen ändern. Darum soll die extern in einem Ordner liegen (darum das angepasste copy-resources)
Bekanntes und typische Anforderungen...also ein ZIP oder .tar.gz erstellen wo eine Verzeichnisstruktur enthalten ist und die hibernate.cfg.xml entsprechend abgelegt ist....dort ist dann ein bat/cmd/sh file zum starten....
-MacNuke- hat gesagt.:
Nebenbei steht immernoch die Frage nach separat aufrufbaren Tasks
In Ant hab ich damit z.B. den Datenbank-Manager von HSQLDB gestartet. Oder den Shemaexport separat gelegt. Bei anderen Projekten arbeite ich mit einer MySQL Datenbank und da wäre ein ständiges erstellen der Datenbank ziemlich lästig, nur weil ich ein jar erstellen will. ;-) Weil die Datenbank ändert sich nicht soooooo oft.
Aber mal schauen. Vllt. packe ich solche Sachen auch in eine build.xml und nutze Maven und Ant..., sofern das gewünschte nicht funktioniert...