Maven: Abhängigkeit im Jetty laden

Status
Nicht offen für weitere Antworten.

tm001

Mitglied
Moin,
ich habe eine Anwendung bestehend aus Client und (Web-)Server und möchte nun mit JUnit den Client testen. Damit die Tests erfolgreich absolviert werden können, wird ein laufender Server benötigt. Für das Bauen, Testen und Deployment verwende ich Maven.

Daher verwende ich das Jetty-Maven-Plugin, welches vor den Tests gestartet, sowie anschließend beendet wird. Als Abhängigkeit habe ich das Webserver-Projekt angegeben. Allerdings versucht das Plugin, ein nicht-existierendes war-File meiner Client-Applikation zu laden.

Wie kann ich dem Plugin mitteilen, dass er das über die angegebene dependency geladene war-File im Jetty hochfahren soll? Nach dem was ich über google erfahren habe, konnte man in Maven1 die Property "jetty-bundle" auf "true" setzen. Das ist nun offenbar nicht mehr möglich?

Ich weiß, dass man über das Element <webApp> den Pfad zum war-File angeben kann. Jedoch legt Maven die Abhängigkeiten in irgendeinem Maven-spezifischen Verzeichnis ab, welcher auf verschiedenen Rechnern unterschiedlich aussieht. Kommt man dort vielleicht durch Maven-Variablen (sowas wie ${basedir}) ran? Hier den absoluten Pfad zu verwenden, ist ja auch nicht Sinn der Sache.

Hier übrigens der relevante Ausschnitt aus meiner POM:
Code:
<plugin>
	<groupId>org.mortbay.jetty</groupId>
	<artifactId>maven-jetty-plugin</artifactId>
	<version>6.1.18</version>
	<executions>
	<execution>
		<id>start-jetty</id>
		<phase>test-compile</phase>
		<goals>
			<goal>deploy-war</goal>
		</goals>
		<configuration>
			<daemon>true</daemon>
			<!--<webApp>path/to/servlets.war</webApp>-->
			<scanIntervalSeconds>0</scanIntervalSeconds>
			<connectors>
				<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
					<port>8080</port>
					<maxIdleTime>60000</maxIdleTime>
				</connector>
			</connectors>		                     
			<stopPort>9966</stopPort>
			<stopKey>foo</stopKey>
		</configuration>
	</execution>            
	</executions>
	<dependencies>
		<dependency>
			<groupId>application</groupId>
			<artifactId>server-project</artifactId>
			<version>1.1.1-SNAPSHOT</version>
			<type>war</type>
		</dependency>
	</dependencies>      
</plugin>

Danke schon mal!
 
M

maki

Gast
Kenne mich mit Jetty nicht aus, nutze Tomcat (mit dem Cargo Plugin für Integrationstests), versuche trotzdem mal was dazu zu sagen, auf die Gefahr hin, dass die Antwort die nicht helfen wird.

ich habe eine Anwendung bestehend aus Client und (Web-)Server und möchte nun mit JUnit den Client testen. Damit die Tests erfolgreich absolviert werden können, wird ein laufender Server benötigt. Für das Bauen, Testen und Deployment verwende ich Maven.
Das hört sich wie ein Integrationstest an, dafür verwende ich das Cargo Plugin und ein eigenes Maven Modul(Projekt), letzteres ist aus mehreren Gründen empfehlenswert.

Daher verwende ich das Jetty-Maven-Plugin, welches vor den Tests gestartet, sowie anschließend beendet wird. Als Abhängigkeit habe ich das Webserver-Projekt angegeben. Allerdings versucht das Plugin, ein nicht-existierendes war-File meiner Client-Applikation zu laden.
Hmm... in welcher pom steht denn die Jetty Konfiguration?
Der des Client? Das würde das verhalten erklären ;)
Mit einem eigenen Modul für die Integrationstest wäre das imho anders.

Wie gesagt, kenne das JEtty Plugin nicht, könnte mich auch irren.
 

tm001

Mitglied
Kenne mich mit Jetty nicht aus, nutze Tomcat (mit dem Cargo Plugin für Integrationstests), versuche trotzdem mal was dazu zu sagen, auf die Gefahr hin, dass die Antwort die nicht helfen wird.


Das hört sich wie ein Integrationstest an, dafür verwende ich das Cargo Plugin und ein eigenes Maven Modul(Projekt), letzteres ist aus mehreren Gründen empfehlenswert.
Naja, in bin jetzt nicht so der Experte, was beim Testen die "reine Lehre" angeht. Aber wenn ich das Verhalten von Methoden wie sendMessage() teste, dann ist das doch eher ein Unit-Test als ein Integrationstest, oder? Von daher denke ich, dass das nicht in ein Extra-Modul gehört.

Hmm... in welcher pom steht denn die Jetty Konfiguration?
Der des Client? Das würde das verhalten erklären ;)
Ja, die steht in der des Clients. Ich versteh das Verhalten schon, würde ihm aber trotzdem gerne sagen, dass er es anders machen soll... Prinzipiell sollte es möglich sein, man kann ja wie gesagt auch den Pfad des war-Files angeben.
 
M

maki

Gast
Naja, in bin jetzt nicht so der Experte, was beim Testen die "reine Lehre" angeht. Aber wenn ich das Verhalten von Methoden wie sendMessage() teste, dann ist das doch eher ein Unit-Test als ein Integrationstest, oder? Von daher denke ich, dass das nicht in ein Extra-Modul gehört.
Was denn für eine "reine Lehre"? Maven2 hat einerseits so seine Probleme mit der Integrations test phase und anderer ist Maven2 dafür ausgerichtet (also üblich & empfohlen) die Integrationstest in ein eigenes Modul auszulagern.
Nutzt du Mock Objekte? Oder lässt du die "Komponenten" (zB. alle Schichten) in "echt" arbeiten?
Testen ohne Mockobjekte führt zwangsläufig zu Integrationstests.
Einen Server zu starten um seine Tests durchzuführen ist jedenfalls todsicher ein Integrationtest ;)

Ja, die steht in der des Clients. Ich versteh das Verhalten schon, würde ihm aber trotzdem gerne sagen, dass er es anders machen soll...
Kann es sein dass das Jetty Plugin eben davon ausgeht in einem WAR pom aufgerufen zu werden? ;)
Sinn würde es ja machen.

Nachtrag: Ergänzt.
 
Zuletzt bearbeitet von einem Moderator:

schalentier

Gesperrter Benutzer
Unit-Test = Test der Methoden einer Komponente (=eine Klasse + evtl. Interface), Abhaengigkeiten werden durch Mock-/Dummy-Objekte ersetzt und somit nicht mitgetestet
Integrationstest = Test mehrerer (aller) Klassen in ihrem Zusammenspiel, z.B. User-Story

Ich experimentiere grad ein bisschen mit OpenEJB 3.1 herum, da kann man einen kompletten Application-Container in seinen Tests starten... allerdings weiss ich grad nicht, ob das fuer dich relevant waere.
 

tm001

Mitglied
oh, doch nicht, hab mich geirrt ...

wie kann man denn dem cargo-plugin sagen, dass er im eingebetteten jetty ein bestimmtes projekt laden soll?

so wie unten angeführt läuft es leider nicht.

Code:
<plugin>	 
			<groupId>org.codehaus.cargo</groupId>
			<artifactId>cargo-maven2-plugin</artifactId>
			<version>1.0</version>
			<executions>
			<execution>
				<id>start-container</id>
				<phase>test-compile</phase>
				<goals>
					<goal>start</goal>
				</goals>				
			</execution>			
			</executions>
			<configuration>
				<wait>false</wait>
				<container>
					<containerId>jetty6x</containerId>
					<type>embedded</type>
				</container>
			    	<properties>
					<cargo.servlet.port>8080</cargo.servlet.port>
					<cargo.logging>high</cargo.logging>			      
				</properties>
				<deployer>
					<type>remote</type>
					<deployables>
					<deployable>
						<groupId>acme</groupId>
						<artifactId>projectxyz</artifactId>						
						<type>war</type>			        
				        	<properties>
							<context>contextPath</context>
						</properties>
					</deployable>			          
	    			</deployables>
				</deployer>			
			    
			</configuration>
			
		</plugin>
 
M

maki

Gast
Ok, mit dem Cargo Plugin funktioniert es, danke!
Ja, Cargo ist 'ne geile Sache :toll:

Ich experimentiere grad ein bisschen mit OpenEJB 3.1 herum, da kann man einen kompletten Application-Container in seinen Tests starten... allerdings weiss ich grad nicht, ob das fuer dich relevant waere.
Mit Cargo kann man verschiedene Server installieren, konfigurieren, starten & stoppen:
Containers

* Geronimo 1.x
* JBoss 3.x
* JBoss 4.x
* JBoss 4.2.x
* Jetty 4.x
* Jetty 5.x
* Jetty 6.x
* jo 1.x
* JOnAS 4.x
* JOnAS 5.x
* Oc4J 9.x
* Oc4j 10.x
* Orion 1.x
* Orion 2.x
* Resin 2.x
* Resin 3.x
* Tomcat 3.x
* Tomcat 4.x
* Tomcat 5.x
* Tomcat 6.x
* WebLogic 8.x
* Weblogic 9.x
* WebLogic 10.x
* WebLogic 10.3x

Experimental Containers

* JBoss 5.x
* Jetty 7.x
* JRun 4.x
 
M

maki

Gast
wie kann man denn dem cargo-plugin sagen, dass er im eingebetteten jetty ein bestimmtes projekt laden soll?
Wenn ich mich nicht täusche, sollte doch dass hier ausreichen:
[xml] <deployer>
<type>remote</type>
<deployables>
<deployable>
<groupId>acme</groupId>
<artifactId>projectxyz</artifactId>
<type>war</type>
<properties>
<context>contextPath</context>
</properties>
</deployable>
</deployables>
</deployer>
[/xml]
Was meldet denn Jetty bzw die logs und maven2?

Nebenbei, du musst das in eine eigenes Modul/Pom auslagern, wenn du wirklich diese Phase nutzen willst:
[xml]<phase>test-compile</phase>
[/xml]
.. denn zu dieser Phase ist das war weder erstellt noch im lok. Repo installiert.
Aber wozu denn überhaupt diese Phase missbrauchen? Nicht umsonst hat Maven2 mehr als genug Phasen definiert, zB,. [c]pre-integration-test[/c]
 
Zuletzt bearbeitet von einem Moderator:

tm001

Mitglied
auch in phase "pre-integration-test" das gleiche spiel...
er startet den jetty mit dem standard-cargo-war-file:

Code:
[INFO] [cargo:start]
[INFO] [beddedLocalContainer] Jetty 6.x Embedded starting...
2009-10-07 18:55:27.886::INFO:  Logging to STDERR via org.mortbay.log.StdErrLog
2009-10-07 18:55:27.959::INFO:  jetty-6.1.1rc1
2009-10-07 18:55:28.310::INFO:  Extract jar:file:/path/to/project/target/jetty6x/cargocpc.war!/ to /tmp/Jetty_0_0_0_0_8080_cargocpc.war__cargocpc__xflgf3/webapp
log4j:WARN No appenders could be found for logger (org.apache.jasper.compiler.JspRuntimeContext).
log4j:WARN Please initialize the log4j system properly.
2009-10-07 18:55:29.043::INFO:  Started SelectChannelConnector @ 0.0.0.0:8080
[INFO] [beddedLocalContainer] Jetty 6.x Embedded started on port [8080]
 
M

maki

Gast
Wieso hast du eigentlich
[xml]<type>remote</type>
[/xml]
drinnstehen?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
D JUnit Test in Maven fail und in Eclipse erolgreich Tools - Maven, Gradle, Ant & mehr 4

Ähnliche Java Themen

Neue Themen


Oben