Maven2 <packaging>jar</packaging> über Attribut auf WAR ändern

Status
Nicht offen für weitere Antworten.

wiegia086

Mitglied
Halli hallo,

meine Suche brachte keine passende Lösung für mich herrvor.

Projekte sollen mit Maven2 gebaut und auf einem Server deployed werden.
Um sie deployen zu können benötige ich als Packaging WAR.

Einfachste Lösung wäre einfach bei <packaging>war</packaging> eintragen. jedoch darf ich das nicht, da dies nur eine Komponente von einem gesmaten System darstellt, die als Jar benötigt wird.

Kann mit einem Plugin oder einem Argumente / Goals befehlt, das Projekt als WAR bauen lassen???

Bin für jeden Lösungsansatz dankbar,

Vielen Dank,
 
M

maki

Gast
Projekte sollen mit Maven2 gebaut und auf einem Server deployed werden.
Um sie deployen zu können benötige ich als Packaging WAR.
Ich gehe davon aus dass du diese WARs auf einem ServletContainer deployest.
Sind diese WARs denn auch vollständig bzw. "richtige" WARs?

Einfachste Lösung wäre einfach bei <packaging>war</packaging> eintragen. jedoch darf ich das nicht, da dies nur eine Komponente von einem gesmaten System darstellt, die als Jar benötigt wird.
Ein WAR als JAR zu packen macht imho keinen Sinn, denn diese JAR ist nicht lauffähig bzw. lässt sich nicht einbinden.

Kann mit einem Plugin oder einem Argumente / Goals befehlt, das Projekt als WAR bauen lassen???
Umgekehrt, du kannst dafür sorgen dass die Java Ressourcen und Klassen als "echtes" JAR gepackt werden:
[xml]<archiveClasses>true</archiveClasses>
<attachClasses>true</attachClasses>
[/xml]
Quelle: Maven WAR Plugin - Frequently Asked Questions

Wenn dir das immer noch nicht hilft erklär dochmal deine Anwendungsfall genauer.
 

wiegia086

Mitglied
Hi, danke für die schnelle rückmeldung.

Ich glaube meine Problemstellung nicht korrekt ausgedrückt zu habe.

Probiers nochmal:
Habe eine Projekt, dass eigentlich immer als JAR file von maven gebaut wird.
Entwickelt wird es mit elcipse unter verwendung des Tomcat Plugin --> hot deploy.

Jetzt wollen wir Oberflächentests mit Selenium darüber laufen lassen. Dafür soll es von maven als war compiliert und dann auf den Tomcat 5 deployed werden und die selenium Test darauf durchgeführt werden.

Ich darf jedoch nicht im POM File das Packaging ändern, da es als JAR File für andere Module benötigt wird.

Meine Frage ist nun. Wie kann ich dieses Projekt mit Maven als WAR File bauen lassen ohne das Packageing ändern zu müssen?

ich suche nach einer art Plugin, jedoch unterstüzt das Maven2 WAR plugin das bauen von war nur, wennes im packaging als war eingetragen ist!

Habe ich es nun geschafft mein Problem besser zu beschreiben?

Dank,
 
M

maki

Gast
Habe ich es nun geschafft mein Problem besser zu beschreiben?
Ein bisschen :)
Sorry, bin heute nicht der schnellste...

Habe eine Projekt, dass eigentlich immer als JAR file von maven gebaut wird.
Entwickelt wird es mit elcipse unter verwendung des Tomcat Plugin --> hot deploy.
Ich gehe davon aus dass es sich bei diesem Artifact wirklich nur um Javaklassen (event. auch Servlets) handelt, aber nicht um eine vollständige WebApp.
Liege ich da richtig?
Wenn ja, ergibt deine nächste Frage wenig Sinn für mich:
Jetzt wollen wir Oberflächentests mit Selenium darüber laufen lassen. Dafür soll es von maven als war compiliert und dann auf den Tomcat 5 deployed werden und die selenium Test darauf durchgeführt werden.


Ich darf jedoch nicht im POM File das Packaging ändern, da es als JAR File für andere Module benötigt wird.
Nun, das war plugin kann beides, als war packen und die Javaklassen als JAR anhängen.
Dieses JAR archiv lässt sich recht einfach in anderen Projekten einbinden, der clasifier muss eben auf "classes" gestellt werden, der type als "jar".

Ansonsten würde mir noch einfallen ein neues Modul (ihr habt doch eure App in mehrre Module aufgebroichen, oder?) anzulegen welches als packaging war angebenen hat.

Nur damit wir uns richtig verstehen, Integrationstests (Selenium etc.) sollten immer in ein eigenes Modul ausgelagert werden.

Wie gesagt, ich bin heute incht der schnellste, kannst du vielleicht Auszüge aus der ein oder anderen pom posten und vielleicht ein bisschen mehr erzählen, damit ich den zusammenhang besser verstehe?
 

wiegia086

Mitglied
Oke, habe es akzeptiert dass ich nicht darum rum komme, als in packageing WAR anzugeben!
nun gut,

Hast du eine Ahnung ob ich mit einem Profil das Proejkt als JAR bauen lassen kann?
oder ist der saubere weg
<archiveClasses>true</archiveClasses>
<attachClasses>true</attachClasses>
?

Habe noch eine Frage:
Wenn ich meine Webapp lokal mit dem tomcat plugin hochstarte kann ich in eclipse beim tomcat plugin Dev Loader und jdbc anbindungen angeben!

Die Datenbankanbindungen müsse in einem context.xml file stehen Oda??
Diese File muss dann im Ordner scr/main/webapp/webinf/context.xml liegen damit diese beim bauen mit maven richtig integriert werden?
Ist das richtig?

Vielen Dank,
lg
 
M

maki

Gast
Hast du eine Ahnung ob ich mit einem Profil das Proejkt als JAR bauen lassen kann?
oder ist der saubere weg
<archiveClasses>true</archiveClasses>
<attachClasses>true</attachClasses>
Bin der Meinung dass es nur so geht ;)
Sauberer ist es allemal als ein extra Profil, kA. ob das überhaupt geht.

Aber da man sich die Javaklassen jederzeit als Jar holen kann (wie gesagt, den type und classifier richtig angeben) ist es auch kein Problem, oder?

Habe noch eine Frage:
Wenn ich meine Webapp lokal mit dem tomcat plugin hochstarte kann ich in eclipse beim tomcat plugin Dev Loader und jdbc anbindungen angeben!
Du meinst jetzt aber nicht das Uralt Sysdeo Plugin, oder?
Normlerweise nimmt mandas WTP, das m2eclipse Plugin kann auch schon ein bisschen der Config dafür konfigurieren, manuell ist das auch schnell gemacht.

ie Datenbankanbindungen müsse in einem context.xml file stehen Oda??
Diese File muss dann im Ordner scr/main/webapp/webinf/context.xml liegen damit diese beim bauen mit maven richtig integriert werden?
Ist das richtig?
Nein, eigentlich ist der richtige Pfad dafür imho src/main/webapp/META-INF/context.xml, du kannst es aber über den containerConfigXML Parameter des War Plugins steuern, steht aber auch in der Doku: Maven WAR Plugin - war:war
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben