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 möchte gerne eine WebStart-Anwendung mit Maven basteln. Mit Maven selbst hab ich schon etwas Erfahrung. Mir fehlt aber im Moment noch Erfahrung bei Webanwendungen (bis auf wenige primitive Tutorialprogramme). Beides (Maven und Webapp) kombiniert habe ich noch nicht.
Mein grobe Vorstellung (bzw. da wo ich hin will) von einer Maven-WebStart-Anwendung ist die: Maven-Webstart-Plugin einbinden "mvn package" oder "mvn assembly" ausführen. war-Datei an die richtige Stelle des WebServers kopieren (WebServer neustarten oder war-Datei -"deployen), Adresse in den Browser eingen, Anwendung startet. - bin ich da zu optimistisch (ich würde mich gerne weitgehenst auf die "Konventionen" verlassen und nicht irgendwelche jlnp Dateien erstellen)?
Oder kann man Maven dazu bringen genau so eine all-in-one-war-Datei auszuspucken? (Das deployen von Nexus war genau so einfach).
Bisher hab ich mir einige Anleitungen für das Maven-WebStart-plugin angeschaut. Für mich sind die leider zu lückenhaft (z.B. http://mojo.codehaus.org/webstart/webstart-maven-plugin/examples/war_bundle_1.html): Das fängt beim prinzipiellen Aufbau der Anwendung an: Brauche ich ein extra "webstart-modul" oder kann ich das über das Eltern-Modul der Anwendung abfrühstücken? Wie sähe so ein Modul aus? - Also was muss in die pom? Und wie läuft dann der Deploy/Release-Prozess - ein war Datei gehört wahrscheinlich nicht ins "Release Repository" oder?
Edit: inzwischen hab ich ein ausführlichere Beispiel gefunden:Maven Webstart Plug-In - Maven Webstart Plugin. ist das die richtige Konfiguration für mich (ganz unten die pom): JnlpDownloadServlet mojo plugin configuration overview?
Anschließend liegt im Target Verzeichnis ein neues Unterverzeichnis in dem alle notwendigen JARs sowie die generierte JNLP liegt (Einfach so auf den Webserver kopieren). Wenn Du kompliziertere Sachen bauen willst, kann es sein das Du ein JNLP Template anlegen musst.
mhm, mit package gehts nicht, dann bekomm ich nur eine jar-datei. Also was muss ich ausführen damit er mir das jnlp leifert? und was hat es mit der ganzen "execution"-Abteilung auf sich?
wie gesagt die doku zu webstart maven plugin ist ähnlich lückenhaft. für andere plugins gibt es beispiele die funktionieren - out of the box.
also gibt es ein besipiel für eine pom datei mit minimal-konfiguration? also welche dinge werden durch konventionen erschlagen - die will ich erstmal alle gar nicht wissen. nur das was gebraucht wird damit "hello world" als webstart läuft.
oder ist obiges beispiel "minimal" und nur die "phase" ist falsch? welche ist richtig?
übrigens hab ich mit dem anderen plugin: code_poet : New Maven Webstart Plugin schon ein Paket hinbekommen. Nur meinte Java Webstart dann, dass es die Resource launch.jnlp nicht downloaden kann. Deswegen dachte ich ich probier nun mal das codehouse plug-in.
Das heißt keiner kann mir eine pom-Datei zeigen mit der es funktioniert? Nur Codeschnipsel bei denen man nicht weiß welche Einstellungen durch welche Konventionen eventuell schon gedeckt sind? (Aslo analog zu den Dokus der anderen Maven Plugins oder eben code_poet : New Maven Webstart Plugin).
Das Beispiel von Guest2 zeigt eben die "pre-integration-test" andere Beispiele "process-resources" (wirft bei package Fehler "artifact with no file: de.meineorg:webstartApp:jar:0.0.1-SNAPSHOT"). Da würde mich interesieren gibt es da keine vernünftige Konvention? (bei keinem Plugin musste ich bisher Execution angeben - die Konventionen waren immer ausreichend)
Also, das Beispiel von Guest2 produziert die genannte Meldung und als Info kommt: No resources found in pfadZurApp\src\main\jnlp\resources
Kann ich Maven dazu bewegen den Kram zu generieren?
Dein Problem ist offensichtlich, dass du das Maven2 Build Konzept nicht verstanden hast, nur Code schippsel kopieren & einfügen reicht eben nicht.
Dir ist klar das Maven einen Buildlifecycle hat, der verschiedene Phasen beinhaltet und ja nach packaging variiert?
Ja nach Projektstruktur & POM Aufbau ist entweder "process-resources" oder "package oder "install" oder oder oder... richtig.
Wenn du jetzt die Ausführung eines Plugins an die "pre-integration-test" Phase bindest, aber nur bis "package" ausführst, darfst du dich nicht wundern dass diese Plugin nicht ausgeführt wird, das hast du selber konfiguriert.
Du wirst keine Plugin Doku finden in dem sowas im Detail erklärt wird, gehört nähmlich zu den Grundlagen von Maven2.
ok danke maki mit diesen infos kann ich was anfangen. Was spricht aber dagegen für die Phase wann ein Plugin ausgeführt wird eine gute Konvention mitzugeben - wie bei anderen Plugins. Das 2. WebStart-Plugin (siehe oben) - funktioniert wunderbar ohne eine solche Angabe.
Das Beispiel von Guest2 suggeriert, das es das einzige ist was man konfigurieren muss und der Rest durch Konventionen erledigt wird.
Also was muss man für das Codehouse Webstart-Plugin mindesten konfigurieren? Gibt es eine Konvention für die Execution phase? Wie findet oder kompiliert das Plugin die benötigte .jar -Datei. Um das mal plastische zu machen. Das andere Plugin kommt mit folgendem aus:
damit hat man jnlp und jar (die jar-Datei ist target eines ganz anderen Moduls). Nur das dieser Kram eben leider nicht funktioniert - WebStart wirft eine FailedToDownloadException ->(gekapselte Ausnahme) ConnectException: Connection refused.
Sobald ein Webstart Plugin mehr config braucht, wre es eigentlich leichter die jnlp selbst zu schreiben - die ist ja winzig.
und die richtige Struktur für ein Multi-Module-(Webstart)-Projekt hab ich wohl auch noch nicht. Sollte das webstart-plugin mit seiner Konfig in das Eltern-Modul? Oder in ein seperates? Seperat würde mir gefallen (bei dem alternativen WebStart Plugin ging das ohne Dependency) - wie kann ich in einem Modul ein Schwestermodul verwenden ohne es in Repository installieren zu müssen?
Die meisten Plug-ins haben eine default execution phase(dieses bestimmt auch), weil diese Plug-ins eben oft in ein & denselben Kontext verwedent werden.
Manchmal passt das leider nicht.. weil man manchmal die Sachen eben etwas anders macht.
Für sowas könnte die Install Phase passen, muss aber nicht.
Wenn ich zB. ein WAR baue aus mehreren WebApps, dann wäre install nicht immer die richtige Phase... usw.
Manchmal zB. wäre WebStart nur eine packaging variante einer jar, damit würde ich es in ein eigenes Modul packen, damit ist die Phase nicht mehr so wichtig, als wenn alles in einer POM wäre.
Deswegen ist es wichtig zu verstehen, wie Phasen zusammenhängen
Wenn ein Modul ein anderes als dependency hat, dann läuft das nur noch über das lokale Maven2 repo, deswegen ist die install phase das minimum bei multimodul Projekten!
[c]mvn install[/c]
Alles andere führt zu schrägen Problemen mit MultiModulPorjkten in maven 2 IME, du würdest nicht glauben was ich alles schon gesehen habe, nur weil Leute dachten, package würde reichen in einem Multimodul Projekt.
Ist aber gewohnheitssache, wenn man zB. von Ant kommt glaubt man gerne das compile ausreicht
nun hab ich fast mehr über maven gelernt als über das (Maven)-webstart-(plugin) -- danke maki. Ncohmal zum alternativ -Plugin: hast du eine Vorstellung wieso es ohne ein install / Dependency des schwesternprojekts auskommt?
Übrigens mit dem Teil funktioniert der Webstart nun - zumindest auf einem lokalen Tomcat. Das es auf unserem Test-Tomcat nicht läuft liegt wahrscheinlich an der Konfig (eventuell müssen die .jar-signiert werden).
Die nächste Frage wäre ob in Anbetracht dessen es sich überhaupt lohnt das "offizielle" Maven-WebStart-Plugin zu verwenden oder ob ich nicht lieber bei dem "anderen" bleiben sollte?!
Persönlich achte ich immer das ich plug-ins nutze, die weite Verbreitung haben, das geht natürlich nicht immer.
Ansonsten nehme ich, was funktoniert
Hab schon mehr als einmal den Quellcode für plugins studieren müssen, weil die Doku lücken hatte... du wärst überrascht wie einfach das ist
Ich kenne mich übrigens weder mit WebStart noch mit den maven plug-ins dafür aus, kann dir da also keine konkrete Hilfestellung geben
inzwischen hab ich das "offizielle" Webstart-Plugin tatsächlich zum laufen gekriegt. Das Plugin hat die wahrscheinlich beschissenste Doku die man sich denken kann, aber man findet auf der Seite einen Link zu einer Quellcodeverwaltung mit Beispielprojekten. Anhand der pom-Dateien dort kann man erahnen was man mindestens braucht (zumindest wenn man vorher das andere enfache Plugin benutzt hat - siehe oben). Also hier mal der entsprechende Teil der POM:
Eine "Codebase" Property hab ich nicht gefunden "<codebase>" funktioniert jedenfalls nicht. Per default wird als codebase und homepage die "<url>" aus der pom genommen. Wie man einen keystore macht weiß ich nicht- den gibts bei uns schon.
Noch etwas zum Rest: bei mir ist "webstart" ein extra Modul. Und dieses Modul hat nur eine Abhängigkeit zu einem Modul - das wiederum erzeugt nur eine Assembly(jar-with-dependencies). Aus diesem Grund hab ich "<excludeTransitive>true</excludeTransitive>" drinne - damit werden nicht alle jar's von allen Abhängigkeiten (auch indirekten) mit in die zip gepackt. Aus irgendeinem Grund erzeugt das Modul selbst aber eine jar, die aber völlig sinnlos ist, aber das werd ich auch noch in den Griff kriegen.
inzwischen hab ich das "offizielle" Webstart-Plugin tatsächlich zum laufen gekriegt. Das Plugin hat die wahrscheinlich beschissenste Doku die man sich denken kann, aber man findet auf der Seite einen Link zu einer Quellcodeverwaltung mit Beispielprojekten. Anhand der pom-Dateien dort kann man erahnen was man mindestens braucht (zumindest wenn man vorher das andere enfache Plugin benutzt hat - siehe oben).
Also wenn die Doku so sch... ist wie Du sagst hast Du denn auch mal ein paar Issue Einträge (Maven 2.x Webstart Plugin - jira.codehaus.org) mit entsprechenden Vorschlägen gemacht wie die Doku verbessert werden kann ?