Maven, Cargo, Selenium - brauche Hilfe bei Konfiguration

dermoritz

Bekanntes Mitglied
ich hoffe meine Erklärung ist nicht komplizierter als es eh schon ist ;-):

Mein Setup/Projekt: gwt-maven-Projekt mit folgernder Struktur:

parent
--Hauptmodul(gwt, webanwendung, war)
--Integrationstest

(Ich schreib erstmal was ich will und weiter unten wie ich es umgesetzt hab)

Plan ist im Integrationstestmodul Seleniumtests zu machen. Und zwar so: Die Seleniumtests sollen alle im IT-Modul untergebracht sein. Die Seleniumtests sollen nicht im default Profil laufen sondern müssen explizit aktiviert werden. Cargo:run soll im Hauptmodul funktionieren (wenn der Container läuft sollten die Seleniumtests auch aus Eclipse heraus laufen oder?)
Bei Aktivierung der Seleniumtests soll cargo irgendwann nach "package" des Hauptmoduls starten und irgendwann nach "integration-test" des IT-Moduls stoppen.

Was wäre euer Vorschlag für diesen Use-Case?

Im Moment läuft es ich finde es aber sehr unschön:
- im parent ist cargos Minimalkonfiguration (tomcat7x, ports) in plugin-management eingetragen

- Im Hauptmodul wird in "pre-integration-test" (alles nach "package" ginge wahrscheinlich) cargo gestartet und die war-Datei deployed (in einigen Profilen wird ein andere war-Name gesetzt)

- im It- Modul wird der Test in "integration-test" ausgeführt (per fail-safe) und cargo wird in post-integration-test gestoppt (man muss cargo sagen wo der container ist - verweis auf das hauptmodul)

- das automatische starten und stoppen inklusive des "includes" der Seleniumtests (**/*Selenium.java) passiert in einem Profil mit Aktivierung "-DseleniumTest=true"

Warum ich es unschön finde (für die die es schön finden :)): Die Konfiguration von Cargo ist nun in alle drei Module verteilt. Optimal wäre so eine übergreigfende Geschichte im parent untergebracht. Das Problem ist, dass z.B. die war-Namen im Hauptmodul geändert werden (im Profil ci und release):
Code:
<warName>${project.artifactId}</warName>

Kann ich aus dem parent auf properties der module zurückgreifen? (module1.project.artifactid) Oder kann ich allgemein auf porperties der module zurückgreifen?
Damit würde ich dann viel zentralisieren können. Oder denke ich einfach völlig falsch?
 

kama

Top Contributor
Hallo,

- Im Hauptmodul wird in "pre-integration-test" (alles nach "package" ginge wahrscheinlich) cargo gestartet und die war-Datei deployed (in einigen Profilen wird ein andere war-Name gesetzt)
Dir ist schon klar, dass pre-integration-test schon nach package liegt ?

- das automatische starten und stoppen inklusive des "includes" der Seleniumtests (**/*Selenium.java) passiert in einem Profil mit Aktivierung "-DseleniumTest=true"
Warum benutzt du hier nicht einfach eine Profile ID ...mvn -Pselenium ?

Die Konfiguration von Cargo ist nun in alle drei Module verteilt. Optimal wäre so eine übergreigfende Geschichte im parent untergebracht.
Warum legst Du nicht einfach die Konfiguration in den Plugin-Management Block...

Das Problem ist, dass z.B. die war-Namen im Hauptmodul geändert werden (im Profil ci und release):
Code:
<warName>${project.artifactId}</warName>
Warum wird denn der Name geändert ?...

Kann ich aus dem parent auf properties der module zurückgreifen? (module1.project.artifactid) Oder kann ich allgemein auf porperties der module zurückgreifen?
Damit würde ich dann viel zentralisieren können. Oder denke ich einfach völlig falsch?
Du kannst auf Properties des Parents zugreifen aber nicht von Kindern auf Properties von anderen Kindern...

Gruß
Karl Heinz Marbaise
 

dermoritz

Bekanntes Mitglied
Danke mal wieder KAMA!

"Warum benutzt du hier nicht einfach eine Profile ID ...mvn -Pselenium ? "

Das hab ich mich neulich auch gefragt. Hab es dann aber erstmal so gelassen (funktioniert ja). Wofür braucht man dann überhaupt noch Aktivierung durch Property?

"Warum legst Du nicht einfach die Konfiguration in den Plugin-Management Block..."
Das hab ich zum Teil schon gemacht (die Minmalkonfiguration). Aber für den Rest muss das parent-Modul eben bestimmte dinge der Kinder Wissen.
Wie zum Beipiel deren Ordner bzw. deren "${project.artifactId}"

"Warum wird denn der Name geändert ?...":
Damit im ci Profil ein Name unabhängig von der Version erzeugt wird. Das Artefakt "Hauptmodul.war" kann ich sehr einfach automatisch auf nen Server (re)deployen (Jenkins deploy plugin oder manuelles überschreiben). Falls für jede Version etwas deployed würde würde der Server zumüllen und die url ändert sich auch immer.

"Du kannst auf Properties des Parents zugreifen aber nicht von Kindern auf Properties von anderen Kindern..."
Kann ich per property im parent auch die Namen/artifactId's der Module setzen? oder kann ich vom parent direkt auf deren Namen zugreifen?

Eine entscheidende Frage bleibt aber: Kann ich das Starten (nach package vom Hauptmodul) und Stoppen (nach "integration-test" von IT-Modul) des Containers zentral steuern (im parent)? Denn über "plugin-management" wird ja noch kein plugin ausgeführt?!
 

kama

Top Contributor
Hi,

Das hab ich mich neulich auch gefragt. Hab es dann aber erstmal so gelassen (funktioniert ja). Wofür braucht man dann überhaupt noch Aktivierung durch Property?
War nur eine Frage...wenn es funkitoniert ...Ich persönlich finde es per profile id schöner...aber das ist Geschmack Sache...

Das hab ich zum Teil schon gemacht (die Minmalkonfiguration). Aber für den Rest muss das parent-Modul eben bestimmte dinge der Kinder Wissen. Wie zum Beipiel deren Ordner bzw. deren "${project.artifactId}"

"Warum wird denn der Name geändert ?...":
Damit im ci Profil ein Name unabhängig von der Version erzeugt wird. Das Artefakt "Hauptmodul.war" kann ich sehr einfach automatisch auf nen Server (re)deployen (Jenkins deploy plugin oder manuelles überschreiben). Falls für jede Version etwas deployed würde würde der Server zumüllen und die url ändert sich auch immer.

Warum nutzt Du nicht einfach den context name ...damit bleibt die URL gleich..Ok.....aber wie oft hast Du andere Versionen ? Nutzt Du keine SNAPSHOT's . Die Version sollte sich doch erst nach einem Release ändern...Du könntest ja für das WAR-Module den FinalName überschreiben...?(Nicht schön...)..

Eine entscheidende Frage bleibt aber: Kann ich das Starten (nach package vom Hauptmodul) und Stoppen (nach "integration-test" von IT-Modul) des Containers zentral steuern (im parent)? Denn über "plugin-management" wird ja noch kein plugin ausgeführt?!
So wie ich das jetzt verstehe....würde ich sagen...Nein....Die Frage ist, ob man was über Profile machen kann....dass wird dann krude...


Kannst Du mal die Struktur des Projektes hier mal posten......

Gruß
Karl Heinz Marbaise
 

dermoritz

Bekanntes Mitglied
Danke Kama,

Zusammengefasst: Meine prinzipielle Konfiguration würde erstmal so bleiben:
- Grundkonfiguration im parent via Pluginmanagement.
- start/stop von cargo in den Untermodulen
- Aktivierung per Property oder Profile - is eigentlich egal (ich werde es trotzdem ändern wie du vorgeschlagen hast - find ich inzwischen auch hübscher)

Nun zu dem Detail der War-Benennung. Ziel ist auf einem "Staging server" immer den aktuellen Snapshot zu haben, unter einer festen url unabhängig zur Version. Bei jedem Release wird unabhängig davon eine war mit version deployed.
Im Moment regele ich das mit
Code:
                                         <plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-war-plugin</artifactId>
						<configuration>
							<!-- no version attached to name -->
							<warName>${project.artifactId}</warName>
						</configuration>
					</plugin>
Wenn in diesem Profil cargo starten soll muss cargo entsprechend angepasst werden:
Code:
<plugin>
						<groupId>org.codehaus.cargo</groupId>
						<artifactId>cargo-maven2-plugin</artifactId>
						<configuration>
							<configuration>
								<deployables>
									<deployable>
										<!-- in ci profile the final name is changed, set it accordingly-->
										<location>${project.build.directory}\${project.artifactId}.${project.packaging}</location>
									</deployable>
								</deployables>
							</configuration>
						</configuration>
					</plugin>

Ich bin allen Vorschlägen gegenüber offen, die das etwas schöner machen. (final name? context name? - wie sehe das dann aus?)

Da das Starten und Stoppen ja nicht zentral im parent gelagert werden kann, muss das hier auch nicht mehr in die parent-pom.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D [maven] problem mit konfiguration von cargo plugin Tools - Maven, Gradle, Ant & mehr 4
Oneixee5 Maven deploy - per SSH Tools - Maven, Gradle, Ant & mehr 6
H Maven kein Hauptmanifestattribut Tools - Maven, Gradle, Ant & mehr 10
M Programm mit Maven erstellen und starten samt Abhängigkeiten Tools - Maven, Gradle, Ant & mehr 27
D Interne Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 51
J log4j2 mit Hibernate über Maven Tools - Maven, Gradle, Ant & mehr 10
thor_norsk Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf IntelliJ IDE starten Tools - Maven, Gradle, Ant & mehr 8
H Maven JUnit5 Tests werden ignoriert Tools - Maven, Gradle, Ant & mehr 5
thor_norsk Maven Tools - Maven, Gradle, Ant & mehr 32
ExceptionOfExpectation Maven Build Failed: kann nicht von start.spring.io generiertes Projekt auf Eclipse starten Tools - Maven, Gradle, Ant & mehr 20
Ich kann Maven nicht als UmgebungsVariable hinzufügen Tools - Maven, Gradle, Ant & mehr 2
F Maven JAR Plugin Probleme Tools - Maven, Gradle, Ant & mehr 4
W Was "braucht" man denn alles? Maven, Ant, Git, ... Tools - Maven, Gradle, Ant & mehr 21
N Fehler beim Imgui mit Maven Tools - Maven, Gradle, Ant & mehr 7
M Spring Boot Maven pom.xml-Eintrag Tools - Maven, Gradle, Ant & mehr 17
Encera JavaFX und Maven funktioniert nicht Tools - Maven, Gradle, Ant & mehr 1
B maven multi module Projekt und unnötige/zusätzliche Leerzeilen Tools - Maven, Gradle, Ant & mehr 4
J Maven Konfusion Tools - Maven, Gradle, Ant & mehr 7
Tippster Maven Sqlite integrieren (Eclipse, Maven) Tools - Maven, Gradle, Ant & mehr 4
T Image kreieren mit Maven bei JavaFX und nicht modularen Jars Tools - Maven, Gradle, Ant & mehr 12
T JSON Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 7
T JavaFX, Jar über Maven kreieren Tools - Maven, Gradle, Ant & mehr 2
Encera Libraries Maven Projekt hinzufügen Tools - Maven, Gradle, Ant & mehr 9
Oneixee5 Maven Phase Tools - Maven, Gradle, Ant & mehr 3
Robertop maven copy-resources nicht in WAR Datei Tools - Maven, Gradle, Ant & mehr 2
T Maven: Probleme beim Einbinden der Dependencies Tools - Maven, Gradle, Ant & mehr 9
M Mit Maven eine jar Datei bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 1
M Mit Maven eine jar Datei Bauen ohne irgendeine main Methode Tools - Maven, Gradle, Ant & mehr 18
H Maven Maven: <mainClass>NAME?</mainClass> Tools - Maven, Gradle, Ant & mehr 13
H Maven maven-source-plugin is missing Tools - Maven, Gradle, Ant & mehr 5
M Missing Artifact on selbst gehostestes Maven Paket Tools - Maven, Gradle, Ant & mehr 8
M Error code 409 maven Tools - Maven, Gradle, Ant & mehr 5
M github + maven Fehler beim repository erstellen Tools - Maven, Gradle, Ant & mehr 1
M durch Maven wird "var" nicht gefunden Tools - Maven, Gradle, Ant & mehr 4
N Maven Intellij Maven Projekt erstell keine src Tools - Maven, Gradle, Ant & mehr 4
LimDul Maven Einzelne Unit Tests in Maven Builds skippen Tools - Maven, Gradle, Ant & mehr 3
M Maven jpackage-image wird nicht gefunden Tools - Maven, Gradle, Ant & mehr 22
M javafx wird in einem alten programm nicht bei maven gefunden Tools - Maven, Gradle, Ant & mehr 15
L Maven IntelliJ, Maven und JavaFX + SceneBuilder Tools - Maven, Gradle, Ant & mehr 23
von Spotz Maven und Spring: "Add to classpath" ? Tools - Maven, Gradle, Ant & mehr 29
Kirby.exe Projekt mit Maven kompilieren Tools - Maven, Gradle, Ant & mehr 13
P Maven Projekt Abhängigkeiten auf bekante Schwachstellen prüfen Tools - Maven, Gradle, Ant & mehr 4
H Maven dependency Problem ? Tools - Maven, Gradle, Ant & mehr 23
B Maven und Intellij Tools - Maven, Gradle, Ant & mehr 24
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
yakazuqi Maven Eigene API mit Maven einbinden Tools - Maven, Gradle, Ant & mehr 1
M Was ist besser für den Anfang, Maven oder Gradle? Tools - Maven, Gradle, Ant & mehr 6
P Maven Wie die Maven Project version in JSP page verwenden? Tools - Maven, Gradle, Ant & mehr 2
C Maven Multi-Module Projekt Tools - Maven, Gradle, Ant & mehr 2
T Maven Warnings/Fehlermeldungen Tools - Maven, Gradle, Ant & mehr 12
T Maven und Datenbank(treiber) Tools - Maven, Gradle, Ant & mehr 13
T Maven Runnable Jar Tools - Maven, Gradle, Ant & mehr 5
T Grundlagen Maven und Git/Github Tools - Maven, Gradle, Ant & mehr 2
LimDul Maven Maven Surefire Plugin - Warnings upgrade Tools - Maven, Gradle, Ant & mehr 2
G Maven upload Tools - Maven, Gradle, Ant & mehr 0
K Maven - Parent oder Dependency? Tools - Maven, Gradle, Ant & mehr 5
B Maven Maven deploy Tools - Maven, Gradle, Ant & mehr 4
H Jenkins keine Tests gefunden - aber in Maven Tools - Maven, Gradle, Ant & mehr 30
P Mit Maven einen spezifischen Branch nach Tag-Parameter erstellen (in Jenkins-Job) Tools - Maven, Gradle, Ant & mehr 3
P Nur einen Teilbaum in Maven releasen? Tools - Maven, Gradle, Ant & mehr 7
D Cannot invoke "javafx.scene.control.MenuButton.getScene()" nach konvertierung zu maven Tools - Maven, Gradle, Ant & mehr 3
H Maven - keine Durchführung von Tests Tools - Maven, Gradle, Ant & mehr 12
H Jenkins - maven-jar-plugin - kein jar-file Tools - Maven, Gradle, Ant & mehr 38
P JavaFX jar mit Maven Tools - Maven, Gradle, Ant & mehr 9
P Maven & Intellij Modul kann nicht aufgelöst werden Tools - Maven, Gradle, Ant & mehr 12
H Eclipse JUnit erzeugt Fehler im Maven-Test Tools - Maven, Gradle, Ant & mehr 1
H Maven Anfängerproblem - No plugin found for prefix 'archetype' in the current project and in the plugin groups Tools - Maven, Gradle, Ant & mehr 25
sascha-sphw Maven vs Gradle Tools - Maven, Gradle, Ant & mehr 24
D Maven Maven und die Build-Geschwindigkeit Tools - Maven, Gradle, Ant & mehr 11
K Maven IntelliJ + Maven + JavaFX Tools - Maven, Gradle, Ant & mehr 2
J Maven Mit Maven eine ZIP Datei erstellen Tools - Maven, Gradle, Ant & mehr 0
K Maven install schlägt fehl Tools - Maven, Gradle, Ant & mehr 10
I Problem: Maven import extern Lib Tools - Maven, Gradle, Ant & mehr 3
Tom299 Maven Maven funktioniert nach Installation nicht Tools - Maven, Gradle, Ant & mehr 1
I Maven Interface hinzugefügt - Error Tools - Maven, Gradle, Ant & mehr 1
M Verständnisfrage Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven installieren - "Befehl wurde nicht gefunden" Tools - Maven, Gradle, Ant & mehr 1
E Maven: Wie Abhängigkeiten analysieren? Tools - Maven, Gradle, Ant & mehr 0
E Maven Maven distributionManagement Vererbung in child POM Tools - Maven, Gradle, Ant & mehr 8
P Maven Parent- Child POMs Tools - Maven, Gradle, Ant & mehr 13
E Release Kandidaten mit Maven bauen Tools - Maven, Gradle, Ant & mehr 4
C Orderstruktur bei Libarys - Wie mit Ant oder Maven lösen? Tools - Maven, Gradle, Ant & mehr 0
G Maven, finde Dependency nicht... Tools - Maven, Gradle, Ant & mehr 2
G Maven Continious Integration mit Jenkins, Maven und Nexus - wie richtig? Tools - Maven, Gradle, Ant & mehr 1
P Maven Parent und Child Poms - dependencies Tools - Maven, Gradle, Ant & mehr 1
reibi Maven Maven + Eclipse Tools - Maven, Gradle, Ant & mehr 0
P Maven add resource Tools - Maven, Gradle, Ant & mehr 0
D [Maven Pluginentwicklung] - Plugin das nur auf Parent pom läuft Tools - Maven, Gradle, Ant & mehr 0
S Maven Maven und Auflösen von JSF EL Tools - Maven, Gradle, Ant & mehr 5
H Maven HSQLDB in den Maven lifecycle einbinden Tools - Maven, Gradle, Ant & mehr 5
S Maven Unterschiedliche Deployments mit Maven Tools - Maven, Gradle, Ant & mehr 2
S Maven buildnumber-maven-plugin / Formatproblem mit timestamp Tools - Maven, Gradle, Ant & mehr 17
P Erzeugen von WebServices mit Maven und Eclipse (external Tool) Tools - Maven, Gradle, Ant & mehr 2
aze Maven downgraden von 3.x auf 2.09 unter Linux Tools - Maven, Gradle, Ant & mehr 4
Rudolf JSF und Maven mit Eclipse Tools - Maven, Gradle, Ant & mehr 5
M Maven-Dependency kann nicht gefunden werden Tools - Maven, Gradle, Ant & mehr 2
M Maven imports aus Modulen Tools - Maven, Gradle, Ant & mehr 4
P multimodul maven in SVN Tools - Maven, Gradle, Ant & mehr 3
D [Maven] neuerdings "No plugin found for prefix ..." errors Tools - Maven, Gradle, Ant & mehr 7
C Automatisches Deployen in ein externes Maven Repository. Tools - Maven, Gradle, Ant & mehr 5

Ähnliche Java Themen

Neue Themen


Oben